如何向Struts2自定义标签传递一个动态值

如何向Struts2自定义标签传递一个动态值,第1张

这很容易。首先我们来写一个Action类:publicclassLoginAction{publicStringexecute(){returnSUCCESS;}publicvoidsetValue(SomeBeanvalue){thisvalue=value;}publicSomeBeangetValue(){returnthisvalue;}privateSomeBeanvalue;}再写出Bean类:publicclassSomeBean{publicStringgetName(){}publicvoidsetName(Stringname){}}配置Action应该不用说了,没什么特别的,不会就上网查吧。我们现在说方法。方法一:使用OGNL表达式。你可以使用struts自带的标签,他们都支持OGNL,比如s:property。举个例子:你访问LoginAction的时候s:property标签就会显示getValue()getName();如果你想了解的struts2标签和OGNL表达式建议去找更详尽的资料。方法二:当然是使用JSP本身的性质了。通过request和session来获取值。我们把Action类改一下:publicclassLoginAction{publicstringexecute(){SomeBeanvalue=newSomeBean();valuesetName("sfsfjsfje");ActionContextcontext=ActionContextgetContext();//往request里放attributecontextput("value",value);//往session里放contextgetSession()put("value",value);returnSUCCESS;}}接下来我们改页面:就这些,没什么难度。

比如url如:testjspid=1

<% String id= requestgetParameter("id"); / /获取id=1

requestsetAttribute(“id”,id); / /保存到request

sessionsetAttribute(“id”,id); / /保存到session

%>

普通类不行 就算是普通类也必须通过request对象实现

要解决这个问题首先得说下iterator中status里的属性 就我所知共有6个

index,count,even,odd,isFirst,isLast,其中索引是从0开始的,,count=index+1看你序号怎么显示如果从1开始就用count 即#stcount

呵呵,你是在研究这条JSTL表达式的工作原理吗?我也没看过它的源码,不过我想的和你一样,应该是requestgetAttribute()方法取得set中的值,不过也可能是getParameter()方法获得的。

很详细的!取Session中的值 <c:out value="${sessionScopeuseruserId}"></c:out><br> <c:out value="${useruserLoginName}"></c:out><br> <s:property value="#sessionuseruserId"/><br> ${sessionuseruserId}<br> ${sessionScopeuseruserId}<br> 基本语法 一、EL简介 1语法结构 ${expression} 2[]与运算符 EL 提供和[]两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如或等并非字母或数字的符号,就一定要使用 []。例如: ${userMy-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而无法做到动态取值。例如: ${sessionScopeuser[data]}中data 是一个变量 3变量 EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。 假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。 属性范围在EL中的名称 Page PageScope Request RequestScope Session SessionScope Application ApplicationScope 二、EL隐含对象 1与范围有关的隐含对象 与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope; 它们基本上就和JSP的pageContext、request、session和application一样; 在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。 例如:我们要取得session中储存一个属性username的值,可以利用下列方法: sessiongetAttribute("username") 取得username的值, 在EL中则使用下列方法 ${sessionScopeusername} 2与输入有关的隐含对象 与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。 例如我们要取得用户的请求参数时,可以利用下列方法: requestgetParameter(String name) requestgetParameterValues(String name) 在EL中则可以使用param和paramValues两者来取得数据。 ${paramname} ${paramValuesname} 3其他隐含对象 cookie JSTL并没有提供设定cookie的动作, 例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookieuserCountry}来取得它。 header和headerValues header 储存用户浏览器和服务端用来沟通的数据 例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。 另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。 initParam initParam取得设定web站点的环境参数(Context) 例:一般的方法String userid = (String)applicationgetInitParameter("userid"); 可以使用 ${initParamuserid}来取得名称为userid pageContext pageContext取得其他有关用户要求或页面的详细信息。 ${pageContextrequestqueryString} 取得请求的参数字符串 ${pageContextrequestrequestURL} 取得请求的URL,但不包括请求之参数字符串 ${pageContextrequestcontextPath} 服务的web application 的名称 ${pageContextrequestmethod} 取得>

1、相当与if-else结构,if(>

以上就是关于如何向Struts2自定义标签传递一个动态值全部的内容,包括:如何向Struts2自定义标签传递一个动态值、jsp页面上如何把从url传下来的值保存到request或者session里面,然后普通的java类,又是如何获取的呢、struts2标签<s:iterator>获取序号问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9534557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存