【发布时间】:2012-05-16 19:57:00
【问题描述】:
我有一个转换器,它正在改变我所有选项的值:
当我第一次创建selectOneMenu 我有这个html:
<select name="j_idt14:j_idt20" size="1">
<option value="2" selected="selected">Infantil</option> //value="2"
<option value="6">Lançamento Inverno</option>
<option value="5">Lançamento Verão 2</option>
<option value="4">Lançamento Preview 1</option>
<option value="3">Feminina</option>
<option value="7">Masculina</option>//value="7"
</select>
当我提交我的表单时,它会调用转换器并将其转换为对象,它会弄乱我的值(id),它在第一个和最后一个结果上大多重复相同的id。
<select name="j_idt14:j_idt20" size="1">
<option value="2" selected="selected">Infantil</option>//value="2"
<option value="6">Lançamento Inverno</option>
<option value="5">Lançamento Verão 2</option>
<option value="4">Lançamento Preview 1</option>
<option value="3">Feminina</option>
<option value="2">Masculina</option>//value="2" ?
</select>
这是我的converter
@FacesConverter(value = "SubGroup")
public class SubGroup implements Converter
{
private static ProductSubgroupVO productSubgroupVO = new ProductSubgroupVO();
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value)
{
productSubgroupVO.setId(Integer.valueOf(value));
productSubgroupVO = (ProductSubgroupVO) new ProductSubgroupBO().getProductSubgroup(productSubgroupVO).toArray()[0];
return (ProductSubgroupVO) productSubgroupVO;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value)
{
productSubgroupVO = (ProductSubgroupVO) value;
String teste = String.valueOf(productSubgroupVO.getId());
return teste;
}
}
我注意到了一些事情,但我不知道这是否是 converter 的正确行为,每次调用 getAsObject 时,最后都会再次调用 getAsString。
【问题讨论】:
-
这表示
getAsString()已损坏。如果您显示您的转换器逻辑,我们也许可以指出错误。