【发布时间】:2016-10-07 15:17:52
【问题描述】:
我正在使用JSF 2.2,我希望在用户选择"Seleccione..."message 时不显示下一条alert 消息(图片):
[serverERROR: class javax.faces.component.UpdateModelException 无法将类 java.lang.String 类型的 Seleccione... 转换为类 modelo.entidades.Equipo]
我的 Bean 是:
@ManagedBean
@SessionScoped
public class Bean{
private String message;
private Equipo equipoSelected;
private List<Equipo> equipos;
public Bean() {
}
@PostConstruct
public void init(){
message = "Seleccione...";
equipos = new ArrayList<Equipo>();
equipos.add(new Equipo(/*....*/));
equipos.add(new Equipo(/*....*/));
equipos.add(new Equipo(/*....*/));
equipoSelected = new Equipo();
}
public void updateSelected(){
//...
}
public setMessage(String message){
this.message = message;
}
public String getMessage(){
return message;
}
public void setEquipos(List<Equipo> equipos){
this.equipos = equipos;
}
public List<Equipo> getEquipos(){
return equipos;
}
public void setEquipoSelected(Equipo equipoSelected){
this.equipoSelected = equipoSelected;
}
public Equipo getEquipoSelected(){
return equipoSelected;
}
}
xhtml 代码是:
<h:form>
<h:selectOneMenu value="#{bean.equipoSelected}">
<f:selectItem itemValue = "#{null}" itemLabel="#{bean.message}"/>
<f:selectItems value="#{bean.equipos}" var="equipo" itemLabel="#{equipo.name}" itemValue="#{equipo}"/>
<f:ajax event="change" listener="#{bean.updateSelected}" render="@form" execute="@form"/>
</h:selectOneMenu>
</h:form>
谢谢!
【问题讨论】:
-
如果删除行
<f:selectItem itemValue = "#{null}" itemLabel="#{bean.message}"/>会怎样? -
我猜主要问题是缺少转换器,但你是对的,
null值总是容易出错,所以我也建议用其他东西替换它。
标签: jsf jsf-2 selectonemenu