在jsp 页面中,用jsp嵌套java代码码的方式<%%>怎么取出struts2值栈中的对象

%%&gt、用嵌套Java代码的方式&lt、怎么取出strut,在jsp,页面中_编程 -【辩解数码解答站】
%%&gt、用嵌套Java代码的方式&lt、怎么取出strut,在jsp,页面中
编辑: www.bjzlx.net 辩解数码解答站 &&&来源:用户发布&&&发布时间:&&&浏览次数:25
求解,%干了%&gt、用嵌套Java代码的方式&lt、怎么取出strut,在jsp,页面中?晕晕!
【讨论交流】
想再JSP的一个界面显示一个JAVA的主程序结果怎么办
具体不知道你使用的是什么框架,比如你使用的是struts2框架,如果你想在jsp页面上显示“path”这个变量,比如他是String类型的,那么: 1.你在你的类中声明一个私有变量“private String path”,然后给这个path相应的get和set的javabean方法. 2.在st
struts1如何在jsp页面取出从action中传过来的数据?
struts1如何在jsp页面遍历List&Object[]&,在request中放入一个临时变量方法一:直接通过”$(param.name)“ 进行参数值调用。 方法二:可以通过“ request.getParameter (name)”进行参数值调用。 解释:name值的话,已经在struts中进行了映射,可以通过方法一el表达式进行直接调用,或者是在jsp中通过get方法进行参数值获龋
更多相关内容
本站内容由用户发布,本站无法保证其部分内容的真实性,请用户一定仔细判断!
[] &&[联系QQ:] &
津ICP备号&用户名:QYin
文章数:270
评论数:77
访问量:591427
注册日期:
阅读量:1297
阅读量:3317
阅读量:450501
阅读量:1135072
[匿名]51cto游客:
[匿名]sdfsdf:
51CTO推荐博文
下午对这个地方一直感觉很模糊&&然后&决心&查一查,查了之后还是有效果的!嘿嘿&&野猪,加油!野猪记住!你是一只野猪,现在是,将来也是!要学会独立!嘿嘿&&说正题吧&&
一、&#&的用法
&& 1、 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:&&
&&&&&&& parameters& 包含当前HTTP请求参数的Map #parameters.id[0]作用相当于request.getParameter(&id&)&
&&&&&& request 包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute(&userName&)&
&&&&&& session 包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute(&userName&)&
&&&&&& application 包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute(&userName&)&
&&&&&& attr 用于按request & session & application顺序访问其属性(attribute) #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止&
&&&& 2、用于过滤和投影(projecting)集合,如books.{?#this.price&100};&
&&&& 3、构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
二、&%&的用法&
&&& &%&符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。例如在Ognl.jsp中加入以下代码:&
&&& &h3&%的用途&/h3&
&&& &p&&s:url value=&#foobar['foo1']& /&&/p&
&&& &p&&s:url value=&%{#foobar['foo1']}& /&&/p&
三、&$&的用法&
&&& 1、用于在国际化资源文件中,引用OGNL表达式&
&&& 2、在Struts 2配置文件中,引用OGNL表达式&
&&&& 例如:
&&&&&&&& &action name=&AddPhoto& class=&addPhoto&&
&&&&&&&&&&& &interceptor-ref name=&fileUploadStack& /&&&&&&&&&&&&
&&&&&&&&&&& &result type=&redirect&&ListPhotos.action?&&&&&& albumId=${albumId}&/result&
&&&&&&& &/action&
struts2中的OGNL上下文
struts2对OGNL上下文的概念又做了进一步扩充,在struts2中,OGNL上下文通常如下所示:
|&application
context map&|&OgnlValueStack(root) [ user, action, OgnlUtil, ... ]
|&parameters
我们可以使用&#requet&访问HttpServletRequest对象, &#session&访问HttpSession对象,但请注意&根对象&是什么?是ValueStack!
那么ValueStack是什么?值栈。也就是一组对象的堆栈。也就是说,在struts2中,根对象不是我们通常的一个对象,而是一组对象。我们可以 push新的对象到值栈中,也可以弹出值栈的栈顶对象。如上图所示,假设我们将user对象push到值栈中,那么如下的表达式将与之前我们见过的表达式一样,具有相同的结果:
name // 取用户的姓名
age // 取用户年龄
birthday // 取用户生日
customer.name // 取用户所属客户的名称
#request.parameters // 取请求参数
也就是说,我们使用name这个表达式的时候,ONGL会取&根对象&的name属性,但现在根对象是ValueStack!那么访问 ValueStack的name属性意味着什么呢?这意味着: ValueStack会先查看栈顶元素是否有name属性,如果有就返回该属性值,否则取出栈顶下的元素,继续查看,直到栈底为止。
关于ValueStack
Struts2的Action类通过属性可以或得所有相关的值,如请求参数、action配置参数、向其他Action传递属性值(通过Chain结果)等等。
要获得这些参数值,我们要做的唯一一件事就是在Action类中声明与参数同名的属性,在Struts2调用Action类的Action方法之前,就会为相应的Action属性赋值,要完成这个功能,有很大程度上,Struts2要依赖ValueStack对象。这个对象贯穿整个Action的生命周期(每个Action类的对象实例会拥有一个ValueStack对象)。当Struts2接收到一个.action的请求后,会先建立Action类的对象实例,但并不会调用Action方法,而是先将Action类的相应属性放到ValueStack对象的顶层节点(ValueStack对象相当于一个栈)。只是所有的属性值都是默认的值,如String类型的属性值为null,int类型的属性值为0等。处理完上述工作后,Struts2就会调用拦截器链中的拦截器,当调用完所有的拦截器后,最后会调用Action类的Action方法,在调用Action方法之前,会将ValueStack对象顶层节点中的属性值赋给Action类中相应的属性,注意,在这里就给我们呆了很大的灵活性。也就是说,在Struts2调用拦截器的过程中,可以改变ValueStack对象中属性的值,当改变某个属性之后,Action类的相应属性值就会变成在拦截器中最后改变该属性的这个值。
从上面的描述很容易知道,在Struts2的Action类可以获得与属性同名的参数值就是通过不同的拦截器来处理的,如获得请求参数的拦截器是params,获得Action的配置参数的拦截器是staticParams等,在这些拦截器内部读取相应的值,并更新ValueStack对象顶层节点的相应属性的值。而ValueStack对象就像一个传送带,将属性的值从一个拦截器传到了另一个拦截器(当然,在这期间,属性值可能改变),最后会传到Action对象,并将ValueStack对象中的属性的值的终值赋给Action类的相应属性。
1、值栈(ValueStack)
Struts2将OGNL上下文设置为Struts2中的ActionContext(内部使用的仍然是OgnlContext),并将值栈设为OGNL的根对象。
我们知道,OGNL上下文中的根对象可以直接访问,不需要使用任何特殊的&标记&,而引用上下文中的其他对象则需要使用&#&来标记。由于值栈是 上下文中的根对象,因此可以直接访问。那么对于值栈中的对象该如何访问呢?Struts2提供了一个特殊的OGNLPropertyAccessor,它 可以自动查找栈内的所有对象(从栈顶到栈底),直接找到一个具有你所查找的属性的对象。也就是说,对于值栈中的任何对象都可以直接访问,而不需要使用 &#&。
假设值栈中有两个对象:student和employee,两个对象都有name属性,student有学号属性number,而 employee有薪水属性salary。employee先入栈,student后入栈,位于栈顶,那么对于表达式name,访问的就是student 的name属性,因为student对象位于栈顶;表达式salary,访问的就是employee的salary属性。正如你所见,访问值栈中的对象属 性或方法,无须指明对象,也不用&#&,就好像值栈中的对象都是OGNL上下文中的根对象一样。这就是Struts2在OGNL基础上做出的改进。
2、[N]语法
如上所述,如果想要访问employee的name属性,应该如何写表达式呢?我们可以使用[N].xxx(N是从0开始的整数)这样的语法来指定从哪一个位置开始向下查找对象的属性,表达式[1].name访问的就是employee对象的name属性。
在使用[N].xxx语法时,要注意位置序号的含义,它并不是表示&获取栈中索引为N的对象&,而是截取从位置N开始的部分栈。
3、top关键字
top用于获取栈顶的对象,结合[N].xxx语法,我们就可以获取栈中任意位置的对象。
如:[0].top,[1].top等
4、访问静态成员
除了使用标准的OGNL表达式访问静态字段和静态方法外,Struts2还允许你不指定完整的类名,而是通过&vs&前缀来调用保存在栈中的静态字段和静态方法。
@vs@FOO_PROPERTY
@vs@someMethod()
@vs1@someMethod()
vs表示ValueStack,如果只有vs,那么将使用栈顶对象的类;如果在vs后面跟上一个数字,那么将使用栈中指定位置处的对象类。
5、值栈中的Action实例
Struts2框架总是把Action实例放在栈顶。因为Action在值栈中,而值栈又是OGNL中的根,所以引用Action的属性可以省略&#&标记,这也是为什么我们在结果页面中可以直接访问Action的属性的原因。
6、Struts2中的命名对象
Struts2还提供了一些命名对象,这些对象没有保存在值栈中,而是保存在ActionContext中,因此访问这些对象需要使用&#&标记。这些命名对象都是Map类型。
parameters
用于访问请求参数。如:#parameters['id']或#parameters.id,相当于调用了HttpServletRequest对象的getParameter()方法。
注意,parameters本质上是一个使用HttpServletRequest对象中的请求参数构造的Map对象,一量对象被创建(在调用Action实例之前就已经创建好了),它和HttpServletRequest对象就没有了任何关系。
用于访问请求属性。如:#request['user']或#request.user,相当于调用了HttpServletRequest对象的getAttribute()方法。
用于访问session属性。如:#session['user']或#session.user,相当于调用了HttpSession对象的getAttribute()方法。
application
用于访问application属性。如:#application['user']或#application.user,相当于调用了ServletContext的getAttribute()方法。
如果PageContext可用,则访问PageContext,否则依次搜索request、session和application对象。
这里面野猪进行了综合&&野猪看了之后明白了许多~呵呵&&
了这篇文章
类别:┆阅读(0)┆评论(0)
17:06:27 17:07:3715967人阅读
struts(10)
那就从简单的标签说起吧!1.x中常用的标签只有4中html、bean、logic、tiles
而struts2.0里的标签却没有分类,只用在jsp头文件加上 &&
&%@ taglib prefix=&s& uri=&/struts-tags& %& & 就能使用struts2.0的标签库 &&
下面就介绍每个标签的具体应用实例说明:按字母排列
2. &s:a href=&&&&/s:a&-----超链接,类似于html里的&a&&/a& &&
3. &s:action name=&&&&/s:action&-----执行一个view里面的一个action &&
4. &s:actionerror/&-----如果action的errors有值那么显示出来 &&
5. &s:actionmessage/&-----如果action的message有值那么显示出来 &&
6. &s:append&&/s:append&-----添加一个值到list,类似于list.add(); &&
7. &s:autocompleter&&/s:autocompleter&-----自动完成&s:combobox&标签的内容,这个是ajax &&
1. &s:bean name=&&&&/s:bean&-----类似于struts1.x中的,JavaBean的值 &&
1. &s:checkbox&&/s:checkbox&-----复选框 &&
2. &s:checkboxlist list=&&&&/s:checkboxlist&-----多选框 &&
3. &s:combobox list=&&&&/s:combobox&-----下拉框 &&
4. &s:component&&/s:component&-----图像符号 &&
1. &s:date/&-----获取日期格式 &&
2. &s:datetimepicker&&/s:datetimepicker&-----日期输入框 &&
3. &s:debug&&/s:debug&-----显示错误信息 &&
4. &s:div&&/s:div&-----表示一个块,类似于html的&div&&/div& &&
5. &s:doubleselect list=&& doubleName=&& doubleList=&&&&/s:doubleselect&-----双下拉框 &&
1. &s:if test=&&&&/s:if& &&
2. &s:elseif test=&&&&/s:elseif& &&
3. &s:else&&/s:else&-----这3个标签一起使用,表示条件判断 &&
1. &s:fielderror&&/s:fielderror&-----显示文件错误信息 &&
2. &s:file&&/s:file&-----文件上传 &&
3. &s:form action=&&&&/s:form&-----获取相应form的值 &&
1. &s:generator separator=&& val=&&&&/s:generator&----和&s:iterator&标签一起使用 &&
1. &s:head/&-----在&head&&/head&里使用,表示头文件结束 &&
2. &s:hidden&&/s:hidden&-----隐藏值 &&
1. &s:i18n name=&&&&/s:i18n&-----加载资源包到值堆栈 &&
2. &s:include value=&&&&/s:include&-----包含一个输出,servlet或jsp页面 &&
3. &s:inputtransferselect list=&&&&/s:inputtransferselect&-----获取form的一个输入 &&
4. &s:iterator&&/s:iterator&-----用于遍历集合 &&
1. &s:label&&/s:label&-----只读的标签 &&
1. &s:merge&&/s:merge&-----合并遍历集合出来的值 &&
1. &s:optgroup&&/s:optgroup&-----获取标签组 &&
2. &s:optiontransferselect doubleList=&& list=&& doubleName=&&&&/s:optiontransferselect&-----左右选择框 &&
1. &s:param&&/s:param&-----为其他标签提供参数 &
struts2的s:param标签主要有两个属性name与value, 若想在value属性中输入直接量,则可以这样写:&s:param name=&some& value=&%{'user'}&/&, 也可以这样写:&s:paramname=&some&&user&/s:param&。但如果直接赋值,这个值不是由Action动态生成的,而是自己指定的一个字符串,则只能用后者
2. &s:password&&/s:password&-----密码输入框 &&
3. &s:property/&-----得到'value'的属性 &&
4. &s:push value=&&&&/s:push&-----value的值push到栈中,从而使property标签的能够获取value的属性 &&
2. &s:radio list=&&&&/s:radio&-----单选按钮 &&
3. &s:reset&&/s:reset&-----重置按钮 &&
1. &s:select list=&&&&/s:select&-----单选框 &&
2. &s:set name=&&&&/s:set&-----赋予变量一个特定范围内的值 &&
3. &s:sort comparator=&&&&/s:sort&-----通过属性给list分类 &&
4. &s:submit&&/s:submit&-----提交按钮 &&
5. &s:subset&&/s:subset&-----为遍历集合输出子集 &&
1. &s:tabbedPanel id=&&&&/s:tabbedPanel&-----表格框 &&
2. &s:table&&/s:table&-----表格 &&
3. &s:text name=&&&&/s:text&-----I18n文本信息 &&
4. &s:textarea&&/s:textarea&-----文本域输入框 &&
5. &s:textfield&&/s:textfield&-----文本输入框 &&
6. &s:token&&/s:token&-----拦截器 &&
7. &s:tree&&/s:tree&-----树 &&
8. &s:treenode label=&&&&/s:treenode&-----树的结构 &&
1. &s:updownselect list=&&&&/s:updownselect&-----多选择框 &&
2. &s:url&&/s:url&-----创建url
___________________________________________________
struts2框架的标签库分为三类:
用户标签:生成HTML元素&
非用户标签:数据访问、逻辑控制等。&
AJAX标签:支持AJAX技术。&
用户界面标签又分两类:
表单标签:生成HTML页面的from元素&
非表单标签:生成页面上的Tab、Tree等&
非界面标签又分为数据访问标签和流程控制标签。
控制标签:
if/elseif/else标签:控制流程分支。&
iteratot标签:对集合属性迭代(属性类型:List、Map、数组)。&
append标签:将多个集合对象拼接在一起,组成一个新的集合。将多个集合使用一个&iterator/&标签完成迭代。&
generatot标签:将指定的字符串按照规定的分隔符分解成多个子字符串。&
merge标签:将多个集合拼接在一起。&
subset标签:获取某个集合的子集合。&
sort标签:多指定的集合元素进行排序。&
数据标签:
action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。&
bean:创建一个JavaBean实例。。&
date:格式化输出一个日期属性。&
debug:生成一个调试链接,当单击该链接时,可以看到当前栈值中的内容。&
i18n:指定国际化资源文件的baseName。&
include:包含其他的页面资源。&
param:设置参数。&
property:输出某个值。可以输出值栈、StackContext 、ActionContext中的值。&
push:将某个值放入值栈。&
set:设置一个新的变量。&
text:输出国际化信息。&
url:生成一个URL地址。&
表单标签:
checkbox标签:复选框。&
checkboxlist标签:根据一个集合属性创建一系列的复选框。&
combobox标签:生成一个单选文本框和一个下拉列表框的组合。&
doubleselect标签:生成一个相互关联的列表框,该标签由两个下拉选择框组成。&
datetimepicker标签:生成一个日期、时间下拉列表框。&
head标签:生成HTML页面的HEAD部分。&
file标签:在页面上生成一个上传文件元素。&
hidder标签:生成一个不看见的用户输入元素。&
select标签:生成下拉列表框。&
optiontransferselect标签:创建两个选项以及转移下拉列表项,该标签生成两个下拉列表框,同时生成相应的按钮,这些按钮可以控制选项在两个下拉列表之间移动、排序。&
radio标签:单选框。&
optgroup标签:生成一个下拉列表框的选择组,下拉列表框中可以包含多个选择组。&
token标签:防用户多次提交表单。&
textarea标签:文本域。&
updownselct标签:支持选项内容的上下移动。&
password表单:密码表单域。&
textfield标签:单行文本输入框。&
非表单标签:
actionerror标签:输出Action中getActionErrors()方法返回的异常信息。&
actionmessage标签:输出Action中getActionErrors()方法返回的信息。&
component标签:生成一个自定义的组件。&
div标签:AJAX标签,生成一个div片段。&
fielderror标签:输出异常提示信息。&
tabbedPanel:AJAX标签,生成HTML中的Tab页。&
tree标签:生成一个树形结构。&
treenode标签:生成树形结构的节点。&
____________________________________________________
Struts之LOGIC标签库详解
1. logic:empty&
该标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:&
1)当Java对象为null时;&
2)当String对象为&&时;&
3)当java.util.Collection对象中的isEmpty()返回true时;&
4)当java.util.Map对象中的isEmpty()返回true时。&
该句等同于:&
if (userList.isEmpty()) {&
2. logic:notEmpty&
该标签的应用正好和logic:empty标签相反。&
3. logic:equal&
该标签为等于比较符。&
eg1. 比较用户的状态属性是否1,若为1,输出&启用&;&
eg2. 如果上例中的value值是动态获得的,例如需要通过bean:write输出,因struts不支持标签嵌套,可采用EL来解决该问题。&
4. logic:notEqual&
该标签意义与logic:equal相反,使用方法类似,略。&
5. logic:forward&
该标签用于实现页面导向,查找配置文件的全局forward。struts-config.xml文件中全局转向&
eg. &logic:forward name=&redirect&/&&
6. logic:greaterEqual&
为大于等于比较符。&
eg. 当某学生的成绩大于等于60时,输出“及格”:&
&logic:greaterEqual name=&student& property=&scores& value=&60&&&
及格&
&/logic:greaterEqual&&
7. logic:greaterThan&
此为大于比较符,使用方法同logic:greaterE&
8. logic:lessEqual&
此为小于等于比较符,使用方法同logic:greaterE&
9. logic:lessThan&
此为小于比较符,使用方法同logic:greaterE&
10. logic:match&
此标签比较对象是否相等;&
eg1. 检查在request范围内的name属性是否包含&hello&串:&
&logic:match name=&name& scope=&request& value=&hello&&&
&bean:write name=&name&/&中有一个“hello”串。&
&/logic:match&&
eg2. 检查在request范围内的name属性是否已“hello”作为起始字符串:&
&logic:match name=&name& scope=&request& value=&hello& location=&start&&&
&bean:write name=&name&/&以“hello”作为起始字符串。&
&/logic:match&&
&logic:match header=&user-agent& value=&Windows&&&
你运行的是Windows系统&
&/logic:match&&
11. logic:notMatch&
此标签用于比较对象是否不相同,与logic:match意义相反,使用方法类似&
12. logic:messagePresent&
该标签用于判断ActionMessages/ActionErrors对象是否存在;&
eg. 如果存在error信息,将其全部输出:&
&logic:messagePresent property=&error&&&
&html:messages property=&error& id=&err& &&
&bean:write name=&err&/&&
&/html:messages&&
&/logic:messagePresent &&
13. logic:messagesNotPresent&
该标签用于判断ActionMessages/ActionErrors对象是否不存在,使用方法与logic:messagePresent类似&
14. logic:present&
此标签用于判断request对象传递参数是否存在。&
eg1. user对象和它的name属性在request中都存在时,输出相应字符串:&
&logic:present name=&user& property=&name&&&
user对象和该对象的name属性都存在&
&/logic:present&&
eg2. 若有一个名字为“hello”的JavaBean,输出对应字符串:&
&logic:present name=&hello& &&
有一个名字为“hello”的JavaBean。&
&/logic:present&&
&logic:present header=&user-agent&&&
we got a user-agent header.&
&/logic:present&&
15. logic:notPresent&
此标签用于判断request对象传递参数是否不存在,意义与了logic:present相反,使用方法类似。&
16. logic:iterator&
用于显示列表为collection的值(List ,ArrayList,HashMap等)。&
eg1. 逐一输出用户列表(empList)中用户的姓名:&
&logic:iterate id=&emp& name=&empList&&&
&bean:write name=&emp& property=&name&/&&br&&
&/logic:iterate&&
eg2. 从用户列表中输出从1开始的两个用户的姓名&
&logic:iterate id=&emp& name=&empList& indexId=&index& offset=&1& length=&2&&&
&bean:write name=&index&/&.&bean:write name=&emp& property=&name&/&&br&&
&/logic:iterate&&
eg3. logic:iterator标签的嵌套举例&
&logic:iterate id=&emp& indexId=&index& name=&empList&&&
&bean:write name=&index&/&. &bean:write name=&emp& property=&name&/&&br&&
&logic:iterate id=&address& name=&emp& property=&addressList& length=&3& offset=&1&&&
&bean:write name=&address&/&&br&&
&/logic:iterate&&
&/logic:iterate&&
17. logic:redirect&
该标签用于实现页面转向,可传递参数。&
eg. &logic:redirect href=&&/&
logic:iterate&
logic:iterate标签用来迭代集合,您可以使用如下方式来为这个标签指定其要叠代的集合:
使用一个运行时表达式,这个表达式的值是一个集合。&
用name属性引用一个JSP Bean,这个JSP Bean本身就是一个集合。&
用name属性引用一个JSP Bean,这个JSP Bean的一个属性是一个集合,这时可以联合使用property来指定这个集合。&
上面所提到的集合可以是:
对象类型或原子类型的数组(Array)。&
java.util.Collection的实现,包括ArrayList,Vector。&
java.util.Enumeration的实现。&
java.util.Iterator的实现。&
java.util.Map的实现,包括HashMap,Hashtable和TreeMap。&
如果您叠代的集合中含有null的值,这时需要采取一定的措施,因为这时logic:iterate不会在page作用域中创建对象。一般是使用&logic:present&标签或&logic:notPresent&标签来判断一下。
下面是logic:iterate叠代ArrayList的示例的对象引用关系和部分代码:
图示 3. logic:iterate中对象的引用关系
图中的persons列表是在ListAction中填充的,在这里只是简单的加入了三个Person对象,在实际的应用中这些数据应该取自数据库。具体的代码如下:
public ActionForward execute(ActionMapping mapping,ActionForm. form,
& & HttpServletRequest request, & HttpServletResponse response) {
ListForm. listForm. = (ListForm)
List&Person& persons = new ArrayList&Person&();
Person person1 = new Person();
person1.setId(&00001&);
person1.setName(&赵辰&);
Person person2 = new Person();
person2.setId(&00002&);
person2.setName(&李为芳&);
Person person3 = new Person();
person3.setId(&00003&);
person3.setName(&王微&);
persons.add(person1);
persons.add(person2);
persons.add(person3);
listForm.setPersons(persons);
return mapping.findForward(&success&);
标签输出的结果为:
00001--&赵辰&
00002--&李为芳&
00003--&王微
logic:present&
如果指定的值出现该标签就会创建其标签体内的内容。该标签用于以下情况:
检查具有指定名称的cookie是否出现。&
检查具有指定名称的header是否出现。&
检查具有指定名称的JSP Bean是否出现 或 检查具有指定名称的JSP Bean中的property属性是否出现。&
检查request中指定名称的参数是否出现。&
检查当前的认证用户是否与指定的安全角色相关联。&
检查当前认证的主体是否具有指定的名字。&
下面的代码示例了logic:present标签检查具有指定名称User-Agent的header是否出现:
&logic:present header=&User-Agent&&
您的浏览器是&bean:header id=&userAgent& name=&User-Agent&/&
& & &bean:write name=&userAgent&/&。&br/&
&/logic:present&
logic:notPresent标签的应用正好和logic:present标签相反。
logic:messagesPresent&
logic:messagesPresent标签用于以下情况:
在request作用域中存在一个ActionMessages对象,标签的property属性和ActionMessages中的property对应。&
在request作用域中存在一个ActionErrors对象,标签的property属性和ActionErrors中的property对应。&
存在一个String对象,将其转换(构造)成ActionMessage然后在添加到ActionMessages中。&
存在一个String Array对象,将数组中的每一个String转换成一个ActionMessage,在将其添加到ActionMessages中。&
标签的message属性值为true时将以Globals.MESSAGE_KEY为key在request作用域中查找Message,其它情况下,将name的值作为key查找,如果name 没有出现,默认值为Globals.ERROR_KEY。&
下面的代码示例了logic:messagesPresent标签的典型用法:
&logic:messagesPresent&
&html:messages id=&message&&
& & &li&&bean:write name=&message&/&&/li&
&/html:messages&
&/logic:messagesPresent& &
标签logic:messagesNotPresent的应用正好和logic:messagesPresent的应用相反。
logic:empty&
logic:empty标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:
当Java对象为null时&
当String对象为&&时&
当java.util.Collection对象中的isEmpty()返回true时&
当java.util.Map对象中的isEmpty()返回true时&
下面的代码示例了logic:empty标签判断集合persons是否为空:
&logic:empty name=&listForm& property = &persons&&
&div&集合persons为空!&/div& & & &
&/logic:empty& &&
logic:notEmpty标签的应用正好和logic:empty标签相反。
logic:match&
logic:match标签用来处理子串匹配问题。
如果指定的值匹配该标签就会创建其标签体内的内容。该标签用于以下情况:&
检查具有指定名称的cookie是否与该标签的value匹配。&
检查具有指定名称的header是否与该标签的value匹配。&
检查具有指定名称的JSP Bean是否与该标签的value匹配 或 检查具有指定名称的JSP Bean中的property属性值是否与该标签的value匹配。&
检查request中指定名称的参数值是否与该标签的value匹配。&
下面的代码示例了logic:match标签的典型用法:
&logic:present header=&User-Agent&&
&logic:match header=&User-Agent& value=&MSIE 6.0&&
& & MS IE 6.0
&/logic:match&
&/logic:present& &&
logic:notMatch标签的应用正好和logic:match标签相反。
logic:equal&
这里要介绍的不只是logic:equal(=)标签,而是要介绍一类标签,这类标签完成比较运算,包括:
logic:equal(=)&
logic:notEqual(!=)&
logic:greaterEqual(&=)&
logic:lessEqual(&=)&
logic:graterThan(&)&
logic:lessThan(&)&
该类标签的用法类似,我们只介绍logic:equal标签,其它的留给您自己去完成。
logic:equal是用来判断是否相等的。如果相等,该标签体中嵌入的内容就会被处理。该标签用于以下情况:
比较由该标签的cookie属性指定的cookie的值是否与该标签的value属性值相等。&
比较由该标签的header属性指定的header的值是否与该标签的value属性值相等。&
比较由该标签的name属性指定的JSP Bean是否与该标签的value属性值相等(property属性不出现)或比较由该标签的name属性指定的JSP Bean中的property属性值是否与该标签的value属性值相等。&
比较由该标签的parameter属性指定的参数值(request中)是否与该标签的value属性值相等。&
logic:forward&
我觉得将forward和redirect这两个动作放到一起对比着介绍更加有利于理解,基于此原因也就将logic:forward和logic:redirect这两个标签也拿到这里一起介绍了。
让我们看看这两个动作的区别:&
forward是在servlet内部执行,浏览器完全不会感知到这个动作,原始的url也不会改变,浏览器重新装载的话也只是对原始的请求进行简单的重复。&
redirect则分成两个步骤:第一步是web应用程序告诉浏览器第二个url,然后浏览器向第二个url发送请求。&
redirect比forward慢,因为浏览器要做二次请求。还有就是要注意,在第一次的请求作用域(request作用域)内的bean对于第二次请求是不可见的。
理解了上面描述的区别也就知道了什么时候该选用logic:forward标签什么时候该选用logic:redirect标签了。logic:forward标签完成PageContext.forward()或HttpServletResponse.sendRedirect(),如何选择由控制器决定。logic:redirect标签完成HttpServletResponse.sendRedirect()。
在使用logic:redirect标签时我们可以向使用html:link一样构造baseurl和query参数。如果您感兴趣可以参考html:link标签。
&s:action&标签的用法
( 18:04:34)
分类: struts2
使用action标签,可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace.如果指定了executeResult参数的属性值为true,该标签会把Action的处理结果(视图资源)包含到本页面中. 使用action标签指定属性有:&
id: 可选属性,作为该Action的引用ID & &
name:必选属性,指定调用Action & &
namespace:可选属性,指定该标签调用Action所属namespace & &
executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含. & &
ignoreContextParam:可选参数,指定该页面的请求参数是否需要传入调用的Action中,默认值是false,即传入参数.&
&&s:action name=&login& executeResult=&true& namespace=&/&&&/s:action& &
& &&s:action name=&actinName& executeResult=&true& namespace=&/&&&
& & &s:param name=&currentPage& value=&传递的值&&&/s:param&&
& &&/s:action&&
&s:param &&/s:param&是以request方式的值的,而不是以参数传值 &
所以request.getParameter(&&)会获取不到值&
通过request.getAttribute(&&)方式可以获取&
另外:使用&s:param &&/s:param& value指代的是action定义的对象的名称,而不是一个值&
和 &s:textfield&中的name是一个意思,所以要要传递字符串的不能把值写value中而应该写到&
&s:param &写到这里&/s:param&&
struts.xml如下配置&
&package name=&reportList& namespace=&/reportList& extends=&default&&&
&action name=&tab_*& action=&xxxx& method=&{1}&&
&result&&/result&&
&/action&&
&/package&&
页面加载如下段&
&s:action na&
me=&tab_gotoHeader& namespace=&/reportList& executeResult=&true&&&
&s:param name=&headerMap& value=&headerMap&&&/s:param&&
&s:param name=&scopeId& value=&1&&&/s:param&&
&s:param name=&reportRemark& value=&indicator.concept&&&/s:param&&
&s:param name=&headerMap['lbName']& value=&indicator.description&&&/s:param&&
&/s:action&&
xxx.action中只要set,get headerMap,scopeId就可以拿到值了
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1201723次
积分:9055
积分:9055
排名:第2065名
原创:109篇
转载:91篇
评论:93条
(1)(1)(1)(2)(1)(3)(1)(1)(3)(1)(4)(2)(1)(1)(3)(6)(5)(1)(6)(1)(7)(1)(1)(5)(11)(9)(4)(3)(11)(1)(10)(12)(33)(10)(2)(3)(11)(6)(10)(5)}

我要回帖

更多关于 jsp中嵌套html页面 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信