`
conkeyn
  • 浏览: 1524720 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Struts2中$,#,%的区别

阅读更多

转自:http://hi.baidu.com/dinfengbo/blog/item/c8500c34c80aa994a9018ecc.html

 

$ # %的区别
a)         $用于i18n和struts配置文件
b)         #取得ActionContext的值
c)         %将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用


应该是这样的:
如果你的变量放在jsp内置对象中则需要这样#request.user.username||#session.user.username
如果你想遍历一个List则你可以这样
<s:iterator value="items" id="item" status="st">
<s:if test="st==0">
<s:a href="#item.id">${item.name}</s:a>可以
<s:a href="%{item.id}">${item.name}</s:a>编译通不过
<s:a href="${item.id}">${item.name}</s:a>编译通不过
<h3><s:property value="username"/></h3>可以
<h3><s:property value="#item.username"/><h3>可以
<h3><s:property value="${item.username}"/><h3>编译通不过
<h3><s:property value="%{item.username}"/><h3>不到错得不到值(因为item没有item属性)
<h3><s:property value="%{username}"/><h3>可以
</s:if>
</s:iterator>
页面中直接调用(employee是Action中的成员变量有get和set方法)
<h2>%{employee.username}</h2>不报错但是得不到值页面显示%{employee.username}
<h3>#{employee.username }</h3>直接编译通不过
<h3>${employee.username }</h3>可以得到值
如果你自己在页面上组装自己的数据(参数)
<s:url id="userid" action="delete.action">
<s:param name="operation" value="7"></s:param>
</s:url>
那么这个时候你就必须要使用
<s:a href="%{userid}"></s:a>

综上所述:
注意
一:在 struts2的标签中绝对不能使用$符号eg<s:textfield value="${username}"/>一旦你这样用页面编译就通不过
二:建议在遍历list的时候不要这样 (#对象.属性和%属性)最好<s:property value="属性"/>.如果你想为你的用户名添加一个连接
可以这样<s:a href="#item.id"> <s:property value="username"/></s:a>
还可以这样:<s:a href="#item.id"><s:property value="#{item.username}"/></s:a>多此一举
还可以这样:<s:a href="#item.id"><s:property value="%{username}"/></s:a>也有点多此一举
还可以这样:<s:a href="#item.id">${item.username}</s:a>兼容性不佳
还可以这样:<a>${item.username}</a>但是这样与struts的关联不太紧密
三:"#"只能在遍历和request及session及applicatin等内置对象中使用
四:"$"主要是用来做简单的显示,注意不要将它写到struts2标签中去
五:"%"主要用在自己在页面组装一些数据特别是参数和遍历list中的属性的时候用
建议,“%”尽量用在组装页面数据的时候使用
“$”尽量用在获取简单的内容性能信息的时候使用
“#”尽量用在针对request、session等的时候使用
"#"和"%"必须配合struts2标签使用
遍历数据最好写法:
<s:iterator value="items" id="item">
<s:a href="%{属性名1}"> <s:property name="属性名2"/></s:a>
</s:iterator>
<s:select label="Role" name="employee.initRole" listKey="id" listValue="name" list="%{data}">
</s:select>

分享到:
评论

相关推荐

    struts2.0标签$ # %的区别

    Struts2框架作为Java Web开发中的重要组成部分,在处理MVC架构时提供了强大的支持。其中,Struts2标签库(Struts2 Tags Library)是开发者常用的工具之一,它不仅简化了前端页面的开发工作,还提高了应用的性能与可...

    struts1和struts2的区别

    ### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...

    Struts1与Struts2本质区别

    ### Struts1与Struts2本质区别 #### 1. 在Action实现类方面的对比 - **Struts 1**:要求Action类必须继承一个抽象基类`Action`,这种设计方式意味着开发者必须按照预设的结构来编写代码,灵活性较低。这种通过抽象...

    struts1和struts2的区别(详细)

    ### Struts1与Struts2的主要区别 #### 一、Action执行机制的不同 - **Struts1**: 在Struts1框架中,Action是基于单例模式的,这意味着所有的请求都会共享同一个Action实例。这就导致了如果在Action中保存实例变量...

    struts2讲义

    ##### 1.2 Struts2与Struts1的区别 - **Struts2** 和 **Struts1** 虽然名字相似,但它们之间并没有直接的继承关系。实际上,Struts2的内核是基于WebWork框架的,而WebWork框架本身就是一个非常优秀的Web应用框架。 -...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    ### Struts2与Struts1的主要区别 #### Struts2架构设计与实现方式 - **Struts2**在设计上采用了更加灵活的方式,每个请求都对应一个实例化的Action对象,而不是像**Struts1**那样在整个请求周期内共享同一个Action...

    转:struts1与struts2的区别

    ### Struts1与Struts2的主要区别 #### 1. Action类的设计差异 - **Struts1**: 在Struts1框架中,Action类必须继承自一个抽象类`org.apache.struts.action.Action`。这种方式可能导致的问题是代码灵活性较低,尤其...

    Struts1和Struts2的区别和对比.txt

    ### Struts1与Struts2的区别与对比 #### 概述 Struts1与Struts2是基于Java的两种流行的Web应用框架,它们都遵循MVC(Model-View-Controller)设计模式,用于构建结构化的Web应用程序。Struts1是早期版本,在2000...

    struts2 与 struts1的区别

    ### Struts2 与 Struts1 的核心区别 #### 一、架构设计及Action实现方式 **Struts1** 在架构上要求Action类必须继承一个特定的抽象基类,这限制了开发者的灵活性,同时也意味着所有的Action都需要遵循相同的生命...

    Struts1与Struts2原理 区别详解汇总

    ### Struts1与Struts2原理及区别详解 #### Struts1原理概述 **Struts1** 是一种基于MVC架构的开源Java Web框架,它主要用于构建动态网站和应用程序。Struts1的核心组件包括ActionServlet、ActionForm以及Action...

    Struts2和Struts1的什么区别

    在探讨Struts2与Struts1的区别时,我们需深入理解这两个框架的设计理念、架构模式以及它们在实际应用中的表现差异。以下将从多个角度详细分析这两种流行Java Web框架的不同之处。 ### 1. **Action类的区别** #### ...

    程序员必看的书籍Struts1和Struts2的区别

    ### Struts1与Struts2的关键区别 #### Struts框架简介 Struts是一个开源的MVC(Model-View-Controller)框架,它帮助开发者构建结构化的Web应用程序。Struts有两个版本:Struts1和Struts2。这两个版本虽然都是基于...

    Struts2入门教程(全新完整版)

    十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...

    struts与struts2的区别

    Struts2支持OGNL(Object-Graph Navigation Language)作为其默认表达式语言,允许在JSP页面中直接访问对象属性和执行方法,而Struts1使用的是JSP EL(Expression Language)或者自定义的Struts标签。 **4. 视图...

    Struts2与Struts1区别

    Struts2 和 Struts1 是两个著名的 Java Web 开发框架,它们都出自 Apache Software Foundation,但有着显著的区别。Struts1 是早期的 MVC 框架,而 Struts2 则是在 WebWork 框架的基础上发展起来的,它吸收了 Struts...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    - 为了克服这些问题,Apache Software Foundation推出了Struts2,这是一个全新的框架,虽然名称相似,但实际上与原始的Struts框架有着本质的区别。 - **Struts2的特点**: - 更强大的MVC架构支持。 - 内置拦截器...

    Struts1和Struts2的区别和对比

    表达式语言(EL)方面,Struts1使用JSTL EL,功能相对较弱,而在Struts2中,它支持更强大的OGNL,允许更灵活的对象图遍历和操作。 视图层的绑定方面,Struts1依赖标准JSP机制,而Struts2引入了ValueStack技术,使得...

Global site tag (gtag.js) - Google Analytics