是、否、空白值需要布尔转换器Struts2
我需要根据在UI表单元素上选择的值保存数据是、否、空白值需要布尔转换器Struts2,struts2,boolean,Struts2,Boolean,我需要根据在UI表单元素上选择的值保存数据 <s:select key="invoice.productSold" list="${productSold}" /> ProductSeld值的下拉列表“”(空白)、“是”、“否” 我的布尔转换器 public class BooleanConverter extends StrutsTypeConverter { @Override /*From form*/ public Object convertFromString(
<s:select key="invoice.productSold" list="${productSold}" />
ProductSeld值的下拉列表“”(空白)、“是”、“否”
我的布尔转换器
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>
}
公共类BooleanConverter扩展StrutsTypeConverter{
@凌驾
/*从形式*/
公共对象convertFromString(映射上下文,字符串[]值,类到类){
字符串值=值[0];
如果(值==“”){
System.out.println(“空”);
返回null;
}
如果(“否”。相等信号情况(值)| |“0”。等于(值)){
返回“false”;
}else如果(“是”。相等信号情况(值)| |“1”。等于(值)){
返回“真”;
}否则{
返回null;
}
}
@凌驾
公共字符串convertToString(映射上下文,对象o){
布尔值=(布尔)o;
返回字符串.valueOf(value);
}
}
公共类发票{
布尔产品已售出;
}
问题
public UpdateAction扩展了ActionSupport{
受保护产品清单;
公共列表GetProductSeld(){
List myOptions=new ArrayList();
myOptions。添加(“”);
myOptions。添加(“是”);
myOptions.添加(“否”);
返回选项;
}
您不需要自定义布尔值转换器,可以使用Struts2国际化功能获取布尔值的“漂亮”文本。 将
true=Yes
和false=No
放在消息属性中,然后使用
标记的listValue
属性调用getText
方法来获取true
和false
的消息
<s:select key="invoice.productSold" list="productSold" listValue="%{getText(top)}"/>
试试这个:
public UpdateAction extends ActionSupport{
protected Map<Object, String> productSold;
public Map<Object, String> getProductSold() {
Map<Object, String> myOptions= new HashMap<>();
myOptions.put(null, "");
myOptions.put(Boolean.TRUE, "Yes");
myOptions.put(Boolean.FALSE, "No");
return myOptions;
}
public UpdateAction扩展了ActionSupport{
受保护地图产品已售出;
公共地图GetProductSeld(){
Map myOptions=new HashMap();
myOptions.put(null,“”);
myOptions.put(Boolean.TRUE,“Yes”);
myOptions.put(Boolean.FALSE,“No”);
返回选项;
}
在JSP中:
<s:select key="invoice.productSold" listKey="productSold.key"
listValue="productSold.value"/>
将ProductSeld设置为类型列表,现在所有值为空的“是”和“否”将被容纳。我不明白,为什么您需要一个类型转换器
,请使用列表=“${ProductSeld}”
@Jaiwo99添加的操作类发布您的操作。@Rizstien我有它是列表,为什么它有${ProductSeld}
而不是%{productselled}
?使用笔直的Struts2标签过着美好的生活…@AndreaLigios:谢谢,错过了,只是从OP问题中复制粘贴。是的,我猜…我的考虑是针对OP顺便说一句:)我忘了+1,很好answer@AleksandrM这是一个表单,我必须选择“是”“否”来提交/更新详细信息。并且我不能使用Struts2标记;因为project有JSP标记。尝试了这个,我没有在表单上的下拉列表中选择是,否
public UpdateAction extends ActionSupport{
protected Map<Object, String> productSold;
public Map<Object, String> getProductSold() {
Map<Object, String> myOptions= new HashMap<>();
myOptions.put(null, "");
myOptions.put(Boolean.TRUE, "Yes");
myOptions.put(Boolean.FALSE, "No");
return myOptions;
}
<s:select key="invoice.productSold" listKey="productSold.key"
listValue="productSold.value"/>