我正在尝试使用 addActionMessage()
和 addActionError()
来传递来自操作的消息和错误(例如在 execute()
中)到转发的页面。
在JSP中,我使用:
<s:if test="hasActionMessages()">
<s:actionmessage/>
</s:if>
显示此类消息。
但没有显示任何消息。我想知道是否有人可以解决这个问题,或者提出另一种解决方案。我是 Struts 和 Web 开发的新手,我不确定将消息从操作传递到页面的正确模式是什么。
编辑: Action 映射代码和java代码
<action name="myAddUser" class="org.any.backend.action.UserAdminAction" method="addUser">
<result name="success" type="redirectAction">myUserAdmin</result>
<result name="input" type="redirectAction">myUserAdmin</result>
</action>
Java 代码:
public String addUser() throws Exception {
// check duplicate
for (User u : userList)
if (u.getUserName().equals(userName)) {
addActionError("A user with the same user name already exists. Choose another user name. ");
return INPUT;
}
if (userName != null && !userName.isEmpty() && password != null && !password.isEmpty()) {
User newUser = new User();
newUser.setUserName(userName);
newUser.setPassword(password);
userList.add(newUser);
addActionMessage("User " + userName + " added. ");
return SUCCESS;
} else {
addActionError("User name and password cannot be empty");
return INPUT;
}
}
最佳答案
您的代码是正确的。
也许您正在使用 REDIRECT-ACTION 结果类型或 CHAIN。 它们都会丢失操作消息和错误,迫使您将它们放入此页面的 session 中(并在显示后清理它们)。
编辑:我假设您正在使用该 block
<s:if test="hasActionErrors()">
<s:actionerror />
</s:if>
<s:if test="hasActionMessages()">
<s:actionmessage/>
</s:if>
不仅是发布的错误,否则您将永远不会看到错误,而只会看到消息...
关于struts2 - struts2中将消息从action传递到JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945949/