gpt4 book ai didi

java - 我可以访问不在 Struts 2 ValueStack 上的另一个操作的属性吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:11 25 4
gpt4 key购买 nike

我有两个 JSP 页面,显示来自两个不同操作的两个列表:页面 A 显示员工列表,页面 B 显示部门列表。

两个页面的顶部都有一个公共(public)文本字段(包含在第三个 JSP 页面中),用于按姓名搜索员工:

<s:form action="searchEmployeesByName">
<s:textfield name="employeeName" />
<s:submit>
</s:form>

搜索操作是 EmployeeAction 类的一部分,我可以加载页面 A 并毫无问题地执行搜索。

但是,在加载页面 B 时,我遇到了 ognl.NoSuchPropertyException,因为属性 employeeName 不在 DepartmentActionValueStack 上。

如何解决这个问题?有什么方法可以从 DepartmentAction 访问 EmployeeActionemployeeName 吗?或者我应该如何重新组织我的操作来执行常见的搜索功能?

这是我的操作配置文件:

<struts>   
<package name="employee" namespace="/employee" extends="tiles-default">
<action name="getEmployeeList" class="my.package.EmployeeAction"
method="getEmployeeList">
<result name="success">/employee_list.tiles</result>
</action>
<action name="searchEmployeesByName" class="my.package.EmployeeAction"
method="searchEmployeesByName">
<result name="success">/search_results.tiles</result>
</action>
</package>
<package name="department" namespace="/department" extends="tiles-default">
<action name="getDepartmentList" class="my.package.DepartmentAction"
method="getDepartmentList">
<result name="success">/department_list.tiles</result>
</action>
</package>
</struts>

最佳答案

操作是根据请求创建的,并且不共享上下文,因为它是线程本地的。如果您需要操作设置的属性,那么您应该在 URL 中提供参数或从 session 中获取它。

您应该为要传递的属性创建 getter 和 setter。通常通过 param 标签传递参数,该标签可用于参数化其他标签。

在您的情况下,您可以在结果配置中使用 param 标签来创建动态参数

<result name="searchEmployeesByName" type="redirectAction">
<param name="actionName">department</param>
<param name="employeeName">${employeeName}</param>
</result>

参见Dynamic Results详细配置。

关于java - 我可以访问不在 Struts 2 ValueStack 上的另一个操作的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17208532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com