我有以下代码
动作:
private String yourSearchEngine;
private String selectedUserGroupId;
//with both getter and setter.
public void validate(){
if("-1".equals(getYourSearchEngine())){
addFieldError("yourSearchEngine", getText("select search engine"));
addressList.add("Select search engine");
}
if("-1".equals(getSelectedUserGroupId())){
addFieldError("selectedUserGroupId", "select user group");
addressList.add("Select user group");
}
JSP页面:
<s:select label="Search engine:"
headerKey="-1"
headerValue="Select Search Engines"
list="searchEngine"
name="yourSearchEngine"
id="yourSearchEngine"
value="defaultSearchEngine"
tooltip="Select Search Engines" />
<s:select label = "User Group:"
list = "userGroupList"
listKey = "userGroupId"
listValue = "userGroup"
name = "selectedUserGroupId"
id="selectedUserGroupId"
headerKey="-1"
headerValue="Select Group"
tooltip="Select Group" ></s:select>
当我提交表单并且值为-1
时,它不显示错误消息。
我可以看到addFieldError
代码运行addressList
已填充。
但是没有显示错误消息。
答案 0 :(得分:0)
默认情况下,Struts2使用xhtml
主题。此主题旨在显示绑定到操作的输入元素的字段错误。如果未显示错误,请确保您已使用xhtml
主题,或者您可以为每个选择标记或表单标记添加明确的theme
属性。您还可以使用struts constant配置默认使用的主题。
<s:select label="Search engine:"
headerKey="-1"
headerValue="Select Search Engines"
list="searchEngine"
name="yourSearchEngine"
id="yourSearchEngine"
value="defaultSearchEngine"
tooltip="Select Search Engines"
theme="xhtml" />
<s:select label = "User Group:"
list = "userGroupList"
listKey = "userGroupId"
listValue = "userGroup"
name = "selectedUserGroupId"
id="selectedUserGroupId"
headerKey="-1"
headerValue="Select Group"
tooltip="Select Group"
theme="xhtml" />
查看您在struts标记中指定theme
的位置。 Specifying The Theme Struts 2 Should Use
您可以基于每个Struts 2标记指定主题,也可以使用以下方法之一指定Struts 2应使用的主题:
- 特定标记
上的theme
属性- 标记周围表单标记的
theme
属性- 名为
的页面范围属性"theme"
- 名为
的请求范围属性"theme"
- 名为
的会话范围属性"theme"
- 名为
的应用程序范围属性"theme"
struts.ui.theme
中的struts.properties
媒体资源(默认为xhtml
)
要在页面上生效,请确保将INPUT
结果配置为使用defaultStack
拦截器的操作。