我正在使用Jsf 2.0和Primefaces 3.2实现一个webapp.我注意到了这种意想不到的行为:我有一个selectOneMenu和一个commandButton,如下所示
<p:selectOneMenu id="selsel" value="#{bean.myObj}">
<f:selectItems value="#{bean.myObjList}" />
</p:selectOneMenu>
<p:commandButton id="btnid" value="Ok" actionListener="#{bean.updateSelectValues()}" />
Run Code Online (Sandbox Code Playgroud)
会发生的是,如果myObj不是a String,updateSelectValues则不调用该方法.我根本看不到任何异常或错误,它只是没有被调用.这是支持bean:
private List<MyObj> myObjList;
private MyObj myObj;
// getters and setters
public void updateSelectValues() {
System.out.println(this.myObj);
}
Run Code Online (Sandbox Code Playgroud)
myObj的代码:
public class MyObj implements Serializable {
private static final long serialVersionUID = 1L;
private String param1;
private int param2;
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("MyObj [param1=");
builder.append(this.param1);
builder.append(", param2=");
builder.append(this.param2);
builder.append("]");
return …Run Code Online (Sandbox Code Playgroud)