1. 程式人生 > >pe框架自定義jsp標簽

pe框架自定義jsp標簽

apple object alias 賬戶 hang ada lec post 業務邏輯

以最常見的獲取賬號列表為例子:

  

  引入標簽,prefix可以理解成別名,或者對象,使用時類似對象.成員。

<%@ taglib prefix="pe" uri="/WEB-INF/tlds/powerengine2.tld"%>

  這裏可以理解成jsp中的k/v,通過tld中的k映射到java中屬性值。也可以理解成聲明,因為牽涉到jsp到java數據的流動,還是kv好些。

<tr align="left" valign="middle" id="localbank">
<td height="23" nowrap class="tdTitle">原綁定卡號/賬號</td>
<td align="left" nowrap class="tdValue" colspan="4" onchange="selectAcNo(this.value)"><select
name="AcNoAlias" onChange="selectAcNo(this.value)">
<pe:optionEx listResolverId="AcACList" input="AcNo"
optionName="id,aliasName,bankAcType,name"
constantPrefix=",,BankAcType,"
optionValue="id,type,bankAcType,currency.id,currency.type,currency.id,name,currency.type"
valuePrefix=",,,Currency,CRFlag,," currentValue="${AcNo}" />
</select></td>


</tr>

  標簽的理解百度即可,入門級這裏寫業務邏輯,一般這裏當做xml解耦

<tag>
        <name>optionEx</name>
        <tag-class>com.csii.pe.channel.http.tag.OptionExTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>listResolverId</name>
        </attribute>
。。。。。。。。。。


  OptionExTag.class接口多態機制,接口的引用指向實例化對象,該出實例化是在mergedPool池中獲取的。 listResolverId是註入的beanid,一般spring都是註入和getbeanid兩步驟。 resolver對象是實例<bean name="AcACList" class="com.csii.ibs.accesscontrol.AcAccessControlListResolver" >
 List items = null;
        ListResolver resolver = mergedPool.getListResolver(this
.listResolverId); if (resolver != null) { items = resolver.getList(context, inputData, extraData, this.defaultRuleDef); }

  resolver.getList();還是獲取的user

  public List getList(Context paramContext, Object paramObject1, Object paramObject2, String paramString)
  {
    IbsUser localIbsUser = (IbsUser)paramContext.getUser();

  其實賬戶管理中的賬號列表都是直接拿user數據了。例如

<pe:option items="${_USER.accounts}"
                            optionName="id,bankAcType,name"
                            constantPrefix=",BankAcType"
                               optionValue="id,type,bankAcType,currency.id,currency.type,currency.id"
                            valuePrefix=",,,Currency,CRFlag"
                            currentValue="${AcNo}"
                            condition= "1D".indexOf(type)!=-1 and subCifNo==null/>

  題外話談下el表達式,el僅僅是一種簡化形式,例如pagecontext.request...等等,mvc將數據分離後,只要數據流到了view層,el都能表示的,常見的context只是一種常用的獲取方式,適配器把傳遞參數都封與此,user也常用,是首次登陸拿的puser和paccount表數據。

pe框架自定義jsp標簽