`
wjboy49
  • 浏览: 284596 次
  • 性别: Icon_minigender_1
  • 来自: 湖南岳阳
社区版块
存档分类
最新评论

关于Struts2中标签的一些心得

    博客分类:
  • java
阅读更多

最近在做Struts2+Hibernet的一个项目,在if标签的使用上出了些问 题,纠结了好久,终于解决了。问题是这样的,在后台有一个brand变量,类型为Brand,该类有一个布尔型的属性Enabled,在后台Action 中通过ActionContext.getContext().put("brand", brand);方法将brand传到前台,在JSP页面中要通过该Enabled的是否为真来显示一组单选框

<s:if test="brand.Enabled "><!-- Enabled为真 -->
  <input type="radio" name="brandEnable" value="true" checked/>启用
  <input type="radio" name="brandEnable" value="false" />不启用
</s:if>	
<s:else><!-- 否则 -->
  <input type="radio" name="brandEnable" value="true" />启用
  <input type="radio" name="brandEnable" value="false" checked />不启用
</s:else>

 在test的测试条件这里纠结了很久,怎么写都不行,后来查了许多资料,终于弄清楚了一些,最终的解决方案是

<s:if test="#attr.brand.=Enabled ">

 以下是我转自他人的一些资料

 

关于test的条件

    test到底要写些什么,在test中关“# ” “%{ }”,“%{# }”的用法是怎样,查了很多资料,网上说,标签中用#可以取出堆栈上下文中的存放的对象.用%{}可以取出存在值堆栈中的Action对象,直接调用它的 方法.例如你的Action如果继承了ActionSupport .那么在页面标签中,用%{getText('key')}的方式可以拿出国际化信息. 而对于“%{#}”,一些人说,用于域对象中,比如%{#session.user.userName},将获得user对象的 userName属性值。

    虽然这个我还是不太明白,但是我必须要实现从session中取出对象来判断是否为空,而我在用户成功登录后,通过 ActionContext.getContext().getSession().put("user",this.getUsername()),将 用户名放入session的user对象中,现在的问题就是要判断user是否为空。

    我用了很多写法如test="#session.user!=null",但一直返回的是false,后来在网上看到说把session改成attr,于 是我写成了<s:if test="#attr.user!=null">,居然成功了,原理暂时还没搞清楚,不过已经实现了自己想要的效果。

    不过好像用struts2的拦截器也可以实现,自己先写一个拦截器,判断session是否为空,然后利用struts.xml映射,返回的不同的字符串对应不同的页面。

    这是从一位仁兄的博客上摘取的,我依样画葫芦,居然测试成功了!但是我还是想搞清楚为什么,后来在另一篇博客上看到好像是Servlet版本的问题,现摘抄一段如下:

    看到这一差别才轰然醒悟过来,原来是在 Servlet 2.4 与 Servlet 2.3 的差别。Tomcat 5.0.28 是能支持 Servlet2.4/JSP 2.0 的,JSP 2.0 是可以用 EL 表达式,而之前版本是不行的,正式这一声明指示着容器应如何解析和编译 JSP 的,而产生未曾意料到的结果。
   对于取pageContext、parameters、request、session、application 等处的属性值(假如有 name 属性)时我们用的 EL 表达式分别是:
${pageScope.name}、${param.name}、{$requestScope.name}、{$sessionScope.name}、{$applicationScope.name}
那么对应的 OGNL 的解决方案分别是:
<s:peroperty value="#attr.name"/> 
<s:property value="#parameters.name"/>
<s:property value="#request.name"/>
<s:property value="#session.name"/>
<s:property value="#application.name"/>
<s:textfield name="name"  value="%{#parameters.name}"/>
说 明,attr 如果可以访问到,则访问 pageContext,否则将 依次搜索 pageContext、request、session、application 相应值,所以可用来访问 pageContext 中的值,可替代 EL 的 ${pageScope.name}。

分享到:
评论
1 楼 cl1154781231 2011-11-09  
<s:peroperty value="#attr.name"/>
<s:property value="#parameters.name"/>
学习了,谢谢!

相关推荐

    struts2学习心得

    ### Struts2学习心得:深入理解Struts2框架的基本配置与初学者指南 #### Struts2框架概述 Struts2是Struts框架的升级版本,它继承了Struts1的优点并在此基础上进行了改进,提供了更丰富的功能和更好的性能。Struts...

    Struts2学习心得

    根据提供的文件信息,本文将围绕“Struts2学习心得”这一主题进行展开,重点解析Struits2框架中的国际化(i18n)功能及其在实际项目中的应用方式,并结合具体的代码示例进行深入探讨。 ### Struts2简介 Struts2是...

    Struts2之struts2文件上传详解案例struts011

    在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解Struts2中的Action类,它是处理用户请求的核心组件。为了支持文件上传,我们需要创建一个继承自`org....

    关于struts实验时的临时总结

    ### 关于Struts2实验时的临时总结 #### 概述 本文档是对Struts2实验过程中的几个关键问题及解决方案进行了归纳与整理。通过实际操作过程中遇到的问题及其解决办法,帮助其他开发者避免同样的错误,并提供高效的学习...

    自己在公司实习做的项目struts2 希望对你有所帮助

    在开发过程中,Struts2还提供了丰富的插件和标签库,如struts2-dojo-plugin用于增强AJAX功能,struts2-convention-plugin简化Action和Action方法的配置。此外,Struts2的标签库可以方便地在JSP页面中进行数据绑定和...

    struts2心得.docx

    9. **依赖注入**:Struts2支持依赖注入,可以通过`&lt;param&gt;`标签为Action类的属性注入值,如设置用户名`username`。 以上就是Struts2的一些关键知识点,包括EL表达式、反射、Action查找、视图转发、OGNL表达式以及...

    struts2<s:if>使用心得

    在Struts2框架中,`&lt;s:if&gt;`标签用于条件判断,类似于Java中的if语句。本篇文章将深入解析这段代码所涉及的关键知识点,并通过实际案例帮助理解如何使用Struts2中的`&lt;s:if&gt;`标签进行逻辑控制。 ### Struts2概述 ...

    Ajax+Struts使用Json数据心得

    本文将详细讲解在Struts2框架中使用Ajax和JSON进行数据交互的心得体会。 首先,要启用Struts2对JSON的支持,你需要在项目中引入`struts2-json-plugin.jar`库。这个库包含了处理JSON数据所需的类和方法,可以从...

    struts2.0配置心得

    - Struts2允许通过`&lt;constant&gt;`标签设置全局常量,影响整个应用的行为。例如,设置开发模式: ```xml &lt;constant name="struts.devMode" value="true"/&gt; ``` 6. **包配置** - 包可以看作是Action和拦截器的集合...

    struts2开发经典总结,错误汇总

    以下是对Struts2开发中常见问题和心得的详细解释: 1. OGNL表达式使用: 在JSP页面中,OGNL(Object-Graph Navigation Language)是Struts2用来表达和操作对象属性的语言。为了使OGNL表达式生效,你需要在JSP页面...

    struts入门教程(比较详细,经验心得)

    **四、Struts标签库** Struts提供了丰富的标签库,如Logic、HTML、Bean等,方便在JSP页面中进行控制流、表单元素和数据展示。 **五、经验与心得** 1. **良好的命名规范**:Action和Form Bean的命名要清晰易懂,...

    struts 培训班源码及笔记

    通过这些源码,你可以了解到如何在实际开发中配置Struts框架,如编写Action类、配置struts.xml文件、使用Struts标签库以及与视图层(例如JSP)的交互。此外,源码可能还包括了异常处理、国际化、文件上传下载等功能...

    S2SH框架搭建和心得

    在`struts.xml`中引入Struts2的标签库,可以使用`&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;`来实现。 在Struts2的配置文件中,我们需要定义Action的配置,例如Action类、结果页面、方法映射等。一个简单的例子...

    j2ee自学笔记--- 一些心得

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级Web应用程序的重要框架。这个自学笔记主要围绕着J2EE的核心技术展开,涵盖了开发过程中的心得和经验,旨在帮助初学者和有经验的开发者...

    Struts in Action

    在描述中提到的博文链接虽然未给出具体内容,但通常这类博客会分享作者在阅读或应用《Struts in Action》一书时的心得体会,可能包含对某些章节的理解、实际项目中的应用示例或者遇到的问题及解决方案。遗憾的是,...

    用Struts、Hibernate和display超简单实现分页

    四、生成页面导航的样式是: [首页/前一页] [后一页/尾页] 显示第1到1条 共3项 每页显示2项 共3页 第1页 GO 其中每页显示2项中的项操作人员可以随便改,“第1页”中的页号可以随便改,操作相当的灵活。...

    jsp源码新闻文章Struts新闻管理系统学习修正版-newsmanager

    Struts框架提供了丰富的标签库以及强大的表单处理功能,简化了Web应用的开发过程。 ### 三、Struts新闻管理系统的学习价值 #### 1. 理解MVC架构 学习Struts新闻管理系统可以帮助开发者深入理解MVC架构的工作原理。...

    java学习感悟,对框架的学习心得

    在实际开发中,我们往往需要结合JSP来展示视图,使用Struts提供的标签库,使得业务数据能方便地注入到JSP中。 接下来是Hibernate,一个强大的对象关系映射(ORM)框架。它允许开发者将数据库操作转换为对Java对象的...

    博客系统(struts+hibernate+spring).rar

    此外,Struts的Form Beans用于在请求之间传递数据,而Struts的标签库简化了JSP页面的编写,使视图层更易维护。 **Hibernate框架** Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。...

    OSCache学习心得

    ### OSCache学习心得 ...无论是通过JSP页面中的标签还是通过Filter配置,甚至是与Struts2框架的结合使用,都能灵活应对各种场景下的缓存需求。掌握这些技巧,将有助于提高Web应用的整体性能和用户体验。

Global site tag (gtag.js) - Google Analytics