struts2标签整理

在JSP2.1中#被用作了JSP EL(表达式语言)的特殊记好,所以对OGNL的使用可能导致问题,
 
一个简单的方法是禁用JSP2.1的EL特性,这需要修改web.xml文件:
 
Java代码  
<jsp-config> 
    <jsp-property-group> 
      <url-pattern>*.jsp</url-pattern> 
      <el-ignored>true</el-ignored> 
    </jsp-property-group> 
</jsp-config>
 
 
很长时间没写前端了,之前用过和自学了一次,对于没有系统学过struts2标签和OGNL的我,,时间长了再去用一些东西总是很混,之前一直用的是EL+JSTL,我想对比着学习和做下笔记,会用就行了,没必要深究
 
出现的原因是:
      EL,我们用它取数据即方便又美观,但是一些逻辑性判断,如if、else,循环还是得用小脚本,页面还是不美观,所以又有了jstl(Java Standard Tag Library),jsp的标准
OGNL和struts2 tag框架自己实现的
 
EL:${expression}     
OGNL:#expression,只不过它多了一个<s:property value="#expression"/>去显示内容,(还有经常看着外面加上%类似%{#expression},它是强制将expression字符串作为表达式去用,而不是字符串 ,%{#{'yes':'精确','no':'模糊'}} 计算成有两个值的map
<s:radio name="%{columnZhName}_querymodel" list="%{#{'yes':'精确','no':'模糊'}}" value="%{columnConditions[objectId].radioValue}" theme="simple" />
 
JSTL:标签里面的内容比如for标签的items的,用的还是EL,等于标签只是做了一些逻辑性判断等,取内容拿内容还是用的EL
          <c:forEach var="student" items="${sessionScope.list}"
STRUTS2 Tag: 与JSTL对比学习,基本都一样的,一个是标签,一个是表达式,自己混的原因,主要还是取值拿值,
标签的话用的时候看下教程:http://struts.apache.org/release/2.3.x/docs/tag-reference.html ,还有百度绝对没问题。
取值拿值就是OGNL,用的时候,先在界面上最末打印个<s:debug><%--<s:debug></s:debug>--%> ,内容分为两个位置Stack Context和(Value Stack Contents
#:读取Stack Context里面的内容 (Value Stack Contents里面的内容直接访问变量名就可以了)
 

struts2常用标签:

<!-- listVehicle是action里面的一个成员变量,它是一个Vehicle对象的一个集合,numberTypeVehicle对象的一个属性,有get方法,也是Value Stack Contents里面的内容可以直接访问
注意如果是文本框里面的值传到action里面去
<input name="people.idCard" type="text" class="input-ryyj" />
如果只需要将idcard传到action,那么people只需要set方法,如果action跳到界面时还要展示之前idcard的值,就还需要get方法。
action里面的people不能手动实例化,struts会自动帮你注入值,不然就会得不到值

-->
<
s:if test="listVehicle !=null && listVehicle.size>0"> <s:iterator value="listVehicle" status="iteratorStauts" var="vehicle"> <tr> <input type="hidden" value="<s:property value="id"/>" id="cl_state_<s:property value='#iteratorStauts.index'/>_pk"/> <td align="center"><s:property value="#iteratorStauts.index+1" /></td> <s:property value="#vehicle.numberType"/> <td align="center"><s:property value="numberType"/></td> <td align="center"><s:property value="vehicleModels"/></td> <td align="center"> <select id="cl_state_<s:property value='#iteratorStauts.index'/>" name='status'> <option value ="0" <s:if test="%{state ==0 }"> selected="selected" </s:if> >未派发</option> <option value ="1" <s:if test="%{state ==1 }"> selected="selected" </s:if> >派发待收</option> <option value ="2" <s:if test="%{state ==2 }"> selected="selected" </s:if> >已接收</option> <option value ="3" <s:if test="%{state ==3 }"> selected="selected" </s:if> >已处理</option> <option value ="4" <s:if test="%{state ==4 }"> selected="selected" </s:if> >已抓获</option> </select> </td> <td align="center"> <s:if test="status == 0" > <select name="organization" id="cl_state_<s:property value='#iteratorStauts.index'/>_organization"> <option value=""></option>
<!-- 访问ConfigData的静态方法getInstance,再访问它的成员方法getOrganizationData-->
<s:iterator value="@com.sungoal.warning.arithmetic.ConfigData@getInstance().organizationData" > <option value="<s:property value="key"/>"><s:property value="value"/></option> </s:iterator> </select> </s:if> </td> </tr> </s:iterator> </s:if>
<s:elseif test="%{true}">
    <div>Will Be Executed</div>
</s:elseif>
<s:else>
    <div>Will Not Be Executed</div>
</s:else>
 


 

posted on 2014-06-21 14:29  lovebeauty  阅读(349)  评论(0编辑  收藏  举报

导航