0

我在使用 struts2 中的标记从我的 jsp 页面调用操作时遇到问题。我有 login.jsp 文件:

<s:action name="headerMenu" executeResult="true" namespace="/menu"</s:action>
<s:form action="executeLogin">
    <s:textfield name="username" label="Username"></s:textfield>
    <s:password name="password" label="Password"></s:password>
    <s:submit></s:submit>
</s:form>

headerMenu 操作在 header.jsp 中呈现结果:

<div id="menu">
    <s:iterator value="menus">
        <s:property escape="false" value="'<a href=\"'+path+'\" title=\"'+description+'\">'+title+'</a>'"/>
    </s:iterator>
</div>

此 jsp 文件呈现一个菜单,该菜单来自 headerMenu 操作的 Action 类中的 LinkedList(命名菜单)。

访问“login.action”时,菜单呈现正常,但是如果我在表单中输入数据,提交表单,并且提交有验证错误,我返回页面,表单呈现正常,但是菜单不见了。我仍然在页面中有“...”,但没有菜单...这就像调用了提供菜单的操作但 execute() 方法不执行...

有人可以帮我吗?

瓦西。

4

2 回答 2

3

Please pay attention to the 1st line. The s:action tag is not closed properly. It should be as follows:

<s:action name="headerMenu" executeResult="true" namespace="/menu"></s:action>
于 2010-07-26T10:09:16.353 回答
0

我将调查原因是否与 struts2 标签文档中的以下 2 个片段有关:

“除非指定了 executeResult 参数,否则在 struts.xml 中为此操作定义的任何结果处理器都将被忽略。”

“在评估整个标签之前,该操作不会发布到上下文,这意味着在标签的主体内,无法访问该操作”

于 2009-03-30T03:25:19.963 回答