• struts 2吊牌s:if 、s:iterator注意


           疏忽,也没有相应的总结。实际上JSTL标签Struts2标签混淆。导致一些上述问题的细节。今天我给从下一个总结,同

    后不要再犯这种错误。

    总喜欢在s:if标签里面使用$,导致各种数据读不出来。

    strust 2 if 标签的单个字符字符串比較的问题;

    还有就是啥时候用#,啥时候不用#,啥时候能够省略#。

    代码1、

    	<select id="typeProvider" name="typeProvider" style=" 200px;">
    		<s:iterator value="providers" var="provider">
    			<option value="${provider.id}"  
    				<s:if test="id==equipment.provider.id">selected="selected"</s:if> >${provider.name}
    			</option>
    		</s:iterator>
    	</select>

    代码作用:跳转到改动资料页面时。下拉列表默认选中的为本设备所相应的供应商

    equipment(本设备对象)、providers(全部供应商List)均有后台Action提供geter/setter方法。

    这行代码(正确):

    <s:if test="<span style="color:#33CC00;">id</span>==equipment.provider.id">selected="selected"</s:if> >${provider.name}
    这个位置,总是写成(错误):

    <s:if test="<span style="color:#FF0000;">provider.id</span> == equipment.provider.id">selected="selected"</s:if> >${provider.name}
    后面发现能够这样写也正确

    <s:if test="<span style="color:#33CC00;">#provider.id</span>==equipment.provider.id">selected="selected"</s:if> >${provider.name}

    事实上原理还真是不怎么清楚。仅仅知道假设action中假设声明了变量,并赋之以set,get方法,那么接收參数是不须要使用#,假如就是普通的request传递,则须要用#。哪位大神假设知晓。希望可以指点一二。


    代码2、

    <span style="font-size:14px;">	<s:iterator value="equipmentList" var="equipment" status="status">
    		<tr style="height: 25px; text-align: center;">
    			<td><s:property value="#status.index+1"/></td>
    			<td>${equipment.terorder}</td>
    			<td>${equipment.tertype}</td>
    			<td>${equipment.provider.name}</td>
    			<td>
    				<s:if test="#equipment.isuser==1">
    				启用
    				</s:if>
    				<s:if test="isuser == 0">
    				禁用
    				</s:if>
    			</td>
    			<td>${equipment.opercard}</td>
    			<td>${equipment.bizcard}</td>
    		</tr>
    	</s:iterator></span>

    还是得说说这个,只是却还要其它问题,代码例如以下(正确):(注意此时的tm_onlinestatus为String类型)

    	<s:if test="%{#items.tm_onlinestatus == 1}">    
    	<span style="color:blue">在线</span>
    	</s:if>
    	<s:if test="%{#items.tm_onlinestatus == 0}">    
    	<span style="color:red">下线</span>
    	</s:if>
    

    只是这样写就不正确啦(错误)!

    <span style="font-size:14px;">	<s:if test="%{#items.tm_onlinestatus == <span style="color:#FF0000;">'1'</span>}">    
    	<span style="color:blue">在线</span>
    	</s:if>
    	<s:if test="%{#items.tm_onlinestatus == <span style="color:#FF0000;">'0'</span>}">    
    	<span style="color:red">下线</span>
    	</s:if></span>
    

    还要一种写法。预计更easy理解(正确):

    <span style="font-size:14px;">	<s:if test='%{#items.tm_onlinestatus ==  <span style="color:#33CC00;">"1"</span>}'>    
    	<span style="color:blue">在线</span>
    	</s:if>
    	<s:if test='%{#items.tm_onlinestatus == <span style="color:#33CC00;">"0"</span>}'>    
    	<span style="color:red">下线</span>
    	</s:if></span>
    

    这里的话:因为java这是一个强类型语言,单引号char类型,它只能被分配给一个字符char类型,双引号表示String类型,因为tm_onlinestatus房地产是String类型,使用双引号是必要的。那么,为什么不能直接 == 1 这种情况是不是很清楚。同样希望指点一二。


  • 相关阅读:
    Java经典编程题50道之二十九
    Java经典编程题50道之二十八
    Java经典编程题50道之二十七
    Java经典编程题50道之二十六
    Java经典编程题50道之二十五
    Python3爬虫(十一) 爬虫与反爬虫
    Python3爬虫(十) 数据存储之非关系型数据库MongoDB
    Python3爬虫(九) 数据存储之关系型数据库MySQL
    Python3爬虫(八) 数据存储之TXT、JSON、CSV
    Python3爬虫(六) 解析库的使用之Beautiful Soup
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4569253.html
Copyright © 2020-2023  润新知