从action类访问jsp页面中的class值

时间:2012-03-29 17:58:58

标签: java jsp struts2

我正在Struts 2上做一个项目,我一点一点地获得知识..

我有这样的行动

<action name="backaction" class="HandlerAction">

<result name="user_profile" type="redirect">hai.jsp</result>

在类处理程序操作中,我有userprofilename成员的对象age

在执行功能

log.info(userprofile.getName())//it is giving name xyz

return "user_profile"

我正在使用hai.jsp,但我无法在jsp中检索该对象userprofile中的值。

hai.jsp如下..

<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<s:textfield name="user_name" value="%{userprofile.name}"/>

</body>
</html>

我尝试将value="%{name}"作为{{1}},但我没有得到值xyz ..

2 个答案:

答案 0 :(得分:1)

Struts2 Redirect Result

将{@link HttpServletResponse#sendRedirect(String)sendRedirect}方法调用到指定的位置。响应被告知将浏览器重定向到指定位置(来自客户端的新请求)。执行此操作的结果意味着刚执行的操作(操作实例,操作错误,字段错误等)将丢失且不再可用。这是因为操作是基于单线程模型构建的。传递数据的唯一方法是通过会话或使用Web参数(url?name = value),它们可以是OGNL表达式。

答案 1 :(得分:1)

问题在于

<result name="user_profile" type="redirect">hai.jsp</result>

因为您正在使用重定向结果类型,这意味着框架将创建一个新的请求和响应对象并丢弃旧的请求/响应Object.So当您从操作返回时,您的用户对象是他们在值堆栈中的属性,直到您告诉S2您要使用redirect结果类型。

在看到重定向结果类型时,它会丢弃所有现有数据,并会为您将其内容置于值堆栈中创建新请求,这就是为什么这对您不起作用。我不确定您使用{{1}的原因结果类型,因为您可以使用结果类型中的任何构建说redirect

如果您仍想使用重定向结果,建议您将用户个人资料数据保存在success中,并在下一步操作中检索或使用scope-interceptor