我需要根据 UI 表单元素上选择的值保存数据
<s:select key="invoice.productSold" list="${productSold}" />
ProductSold 下拉列表值“”(空白)、“是”、“否”。
我的布尔转换器
public class BooleanConverter extends StrutsTypeConverter {
@Override
/*From form*/
public Object convertFromString(Map context, String[] values, Class toClass) {
String value = values[0];
if (value == "") {
System.out.println("null");
return null;
}
if ("No".equalsIgnoreCase(value) || "0".equals(value)) {
return "false";
} else if ("Yes".equalsIgnoreCase(value) || "1".equals(value)) {
return "true";
} else {
return null;
}
}
@Override
public String convertToString(Map context, Object o) {
Boolean value = (Boolean) o;
return String.valueOf(value);
}
}
public class Invoice{
Boolean productSold;
<getter>
<setter>
}
Issues
- 我的表单下拉列表选择“是”并更新;更新后我的下拉列表不显示“是”。它显示空白。
- 在表单上选择“是”时,ConvertFromString 方法返回“true”,而 ConverToString 方法返回“false”。
动作类
public UpdateAction extends ActionSupport{
protected List<String> productSold;
public List<String> getProductSold() {
List<String> myOptions= new ArrayList<String>();
myOptions.add("");
myOptions.add("Yes");
myOptions.add("No");
return myOptions;
}
您不需要自定义布尔转换器,使用 Struts2 国际化功能来获取布尔值的“好”文本。
放true = Yes
and false = No
到您的消息属性,然后使用listValue
的属性<s:select>
标记来调用getText
获取消息的方法true
and false
.
<s:select key="invoice.productSold" list="productSold" listValue="%{getText(top)}"/>
顺便说一句,你不需要在里面使用任何“特殊”符号list
属性从值堆栈中获取值。
顺便说一句第二:你不需要这个productSold
方法在你的操作中,相反,你可以使用 OGNL 列表表示法在 JSP 中定义是/否列表{...}
.
<s:select key="invoice.productSold" list='{"", true, false}' listValue="%{getText(top)}"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)