日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2 s:if标签以及 #,%{},%{#}的使用方法

發布時間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2 s:if标签以及 #,%{},%{#}的使用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

struts2 s:if標簽以及 #,%{},%{#}的使用方法

<s:if>判斷字符串的問題

  1、判斷單個字符:<s:if test="#session.user.username=='c'">

  這樣是從session中取出username的值,并且判斷其是否為c,但是這樣判斷是不正確的,這樣判斷的話,根本判斷不出來,要改成下面這樣:

  <s:if test="#session.user.username=='c'.toString()">

  這樣判斷才能正確判斷,至于原因我也不知道,在網上看到struts2中可能它判斷的是char類型。

  2、判斷字符串:<s:if test="#session.user.username=='milo'">

  這樣寫的就是判斷username是不是milo,是String的判斷,這個是不用加toString()的。

  3、判斷數值:<s:if test="#session.user.username==0">

  這樣寫的就是判斷username是不是0,是int的判斷。

  B:判斷為空的問題:

  <s:if test="#session.user.username==null">

  struts2中的判空似乎只能這么寫

  判斷非空可以這樣寫:

  <s:if test="#session.user.username!=null" >

  ps:如果從action中取屬性值,test中的屬性值前面的'#'不需要,action中的屬性與jsp中的屬性是互通的。

  字符串N一定要用“”雙引號包含,從test的包含則用單引號 ‘ ’,如果相反,則不能正確判斷該屬性是否與該字符串相等。

  正確:

  <s:if test='activityBean.searchForce=="N" '>

  錯誤:

  <s:if test="activityBean.searchForce=='N' ">

  因為java是強類型語言,單引號表示char類型,只能賦給一個字符給char類型,

  而雙引號則表示String類型

  所以我的activityBean.searchForce屬性是String類型,那么N必須要用雙引號

  例如這個語句

  要判斷struts堆棧里systemSettingModel.settingValue 是否等于 "A"

  寫成

  <s:if test="systemSettingModel.settingValue == 'A'">...</s:if>

  是不對的。

  這樣A被認為是字符,而systemSettingModel.settingValue是單字符的字符串,不匹配

  應寫成

  <s:if test='systemSettingModel.settingValue == "A"'>。。。 </s:if>

  或

  <s:if test="systemSettingModel.settingValue == \"A\"">... </s:if>

  另外systemSettingModel.settingValue的值可以這樣取得

  ${systemSettingModel.settingValue}

  <s:property value="systemSettingModel.settingValue"/>

  <s:property value="#request.systemSettingModel.settingValue"/>

  #表示不在struts堆棧里,沒有#表示從struts堆棧里取

  


?

  Struts2堆棧

  struts2中的標簽“# ”,“%{ }”,“%{# }”?

  s:a 中的href 什么時候使用“# ” 什么時候該用“%{ }” 什么時候該用“%{# }” 什么時候用“”

  s:select 中的list 什么時候使用“# ” 什么時候該用“%{ }” 什么時候該用“%{# }” 什么時候用“”

  s:if 中的test 什么時候使用“# ” 什么時候該用“%{ }” 什么時候該用“%{# }” 什么時候用“”

  s:iterator 中的value什么時候使用“# ” 什么時候該用“%{ }” 什么時候該用“%{# }” 什么時候用“”

  s:checkboxlist 中的list 什么時候使用“# ” 什么時候該用“%{ }” 什么時候該用“%{# }” 什么時候用“”

  Struts2中有值堆棧和堆棧上下文的概念,你用 <s:debug />可以看出.

  S標簽中用#可以取出堆棧上下文中的存放的對象.

  用%{}可以取出存在值堆棧中的Action對象,直接調用它的方法.例如你的Action如果繼承了ActionSupport .那么在頁面標簽中,用%{getText('key')}的方式可以拿出國際化信息. %{#}, 這是JSP2.1最新規范中的語法,是Struts2為其解決兼容性問題而寫成%{#}的

  在域對象中使用%{#}

  比如%{#session.user.userName}

  將獲得user對象的 userName屬性值

  %{}強調的是從你設定的root點取

  %{}用于計算表達式

  如%{10+20}結果將輸出30

  如%{"a"+"b"}結果將輸出"ab"

  #通常強調從上下文取

  如#parameters.name[0]等價于request.getParameter("name")

  如#session.name等價于session.getAttribute("name")

  如#request.name等價于request.getAttribute("name")

  %{#}仍然用于計算表達式,只不過操作元可以是變量

如先定義一個變量

  <s:set name="age" value="%{25}"/>

  則%{#age}將輸出25,也可以省略"#",寫為%{age}

  若將age加10,可這么寫:

  %{#age+10},將輸出30.不能省略"#"。也就說變量用于計算時不能省略"#"

?


  

  ognl中的#、%和$

  #、%和$符號在OGNL表達式中經常出現,而這三種符號也是開發者不容易掌握和理解的部分。在這里筆者簡單介紹它們的相應用途。

  1.#符號的用途一般有三種。

  1)訪問非根對象屬性,例如示例中的#session.msg表達式,由于Struts 2中值棧被視為根對象,所以訪問其他非根對象時,需要加#前綴。實際上,#相當于ActionContext. getContext();#session.msg表達式相當于ActionContext.getContext().getSession(). getAttribute(”msg”) 。

  2)用于過濾和投影(projecting)集合,如示例中的persons.{?#this.age>20}。

  3)用來構造Map,例如示例中的#{’foo1′:’bar1′, ’foo2′:’bar2′}。

  2.%符號

  %符號的用途是在標志的屬性為字符串類型時,計算OGNL表達式的值。如下面的代碼所示:

  構造Map

  <s:set name=”foobar” value=”#{’foo1′:’bar1′, ‘foo2′:’bar2′}” />

  <p>The value of key “foo1″ is <s:property value=”#foobar['foo1']” /></p>

  <p>不使用%:<s:url value=”#foobar['foo1']” /></p>

  <p>使用%:<s:url value=”%{#foobar['foo1']}” /></p>

  3.$符號

  $符號主要有兩個方面的用途。

  在國際化資源文件中,引用OGNL表達式,例如國際化資源文件中的代碼:reg.agerange=國際化資源信息:年齡必須在minmin同{max}之間。

  在Struts 2框架的配置文件中引用OGNL表達式,例如下面的代碼片斷所示:

  <validators>

  <field name=”intb”>

  <field-validator type=”int”>

  <param name=”min”>10</param>

  <param name=”max”>100</param>

  <message>BAction-test校驗:數字必須為minmin為{max}之間!</message>

  </field-validator>

  </field>

  </validators

?


?

另一個很容易錯誤應用的問題

<s:if?test="deptType==1"?>下屬</s:if>如果你的數據庫對應的字段類型為整形,可以這樣使用;
<s:if?test="deptType=='1'"?>下屬</s:if>如果你的數據庫對應的字段類型為char,可以這樣使用;
<s:if?test="deptType=='aa'"?>下屬</s:if>如果你的數據庫對應的字段類型為varchar,并且數據庫中的字符串都是多余一個字符的字符串,可以這樣使用;
<s:if?test="deptType==\"1\""?>下屬</s:if><s:else>直屬</s:else>(測試通過,這樣用是最正確的)

?


?

我遇到的樣式選中問題解決方法:

<li>

  <a href="/pro/pro!productList.action?proId=${productType.id}" <s:if test="#productType.id == #parameters.productType[0]">class="currt"</s:if>>${productType.typeName}</a>

</li>


轉自:http://www.cnblogs.com/wkrbky/p/5905642.html

總結

以上是生活随笔為你收集整理的struts2 s:if标签以及 #,%{},%{#}的使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女在线国产 | 男女性高潮免费网站 | 国产精品午夜电影 | 成人毛片视频在线观看 | 日韩黄色三级 | 少妇又色又爽又黄的视频 | 欧美夜夜骑 | 亚洲综合小说网 | www日韩| 狠狠干2017| 日本三级韩国三级三级a级中文 | 反差在线观看免费版全集完整版 | 看片日韩 | 午夜一二区 | 国产午夜大片 | 国外成人在线视频 | 尼姑福利影院 | www.奇米.com| 欧美xx在线 | 国产原创视频在线观看 | 奶水旺盛的少妇在线播放 | 亚洲经典在线观看 | 日韩欧美三级 | 国产精品18久久久久久vr下载 | 打屁股无遮挡网站 | 日本高潮网站 | 日韩激情四射 | www.亚洲国产 | 国产免费久久久 | 国产成人无码精品久在线观看 | 日韩黄色大全 | 国产av第一区 | 国产免费叼嘿网站免费 | 先锋资源一区 | 久久va | 精品久久久久久一区二区里番 | 日本在线视频www色 国产在线视频网址 | 久草精品在线 | 高潮白浆女日韩av免费看 | 少妇无码av无码专区在线观看 | av男人的天堂在线观看 | 欧美射图| 亚洲自拍偷拍第一页 | 郑艳丽三级 | 欧洲在线一区 | 成人h视频在线 | jizz性欧美17 | 免费又黄又爽又色的视频 | 中文乱码人妻一区二区三区视频 | 在线视频观看一区二区 | 日本九九视频 | 黑人黄色录像 | 欧美成人乱码一二三四区免费 | 可以看的毛片 | 涩涩涩综合| 国产综合内射日韩久 | 亚洲一区二区观看 | 国产女人呻吟高潮抽搐声 | 午夜精品一区二 | 日日夜夜中文字幕 | 国产视频在线观看视频 | 白嫩初高中害羞小美女 | 免费看成人 | 久久久成人精品一区二区三区 | 九热这里只有精品 | 视频一区二区三区精品 | 精品无码人妻一区二区三区 | 男插女av| 久草综合在线视频 | aaa特级毛片 | 娇小萝被两个黑人用半米长 | 亚洲成人偷拍 | 国产中文在线播放 | 色亚洲欧美 | 日韩精品系列 | 无码人妻精品一区二区三应用大全 | 靠逼视频免费网站 | 日韩污污 | 国产一区麻豆 | 在线免费观看福利 | 成人黄色在线网站 | 激情九月天 | 亚洲午夜国产 | 91玉足脚交白嫩脚丫 | 久久久久久国产精品三区 | 亚洲女优在线 | 五月婷婷色综合 | 99久久久久久久久久 | 中文字幕免费在线看线人 | 国产精品资源 | 西西44rtwww国产精品 | 久久乐av| 欧洲视频一区二区三区 | 少妇一边呻吟一边说使劲视频 | 三级性视频 | 欧美亚洲色综久久精品国产 | 中国女人真人一级毛片 | xxxx日本少妇 | 国产精品精品国产 |