我遇到了一些对我来说没有意义的问题。尝试在jsf页面中使用selectOneMenu时,出现“标识符解析为null”的错误。
我确实知道这种情况是在没有解析控制器或该字段为null时发生的,但是:i)如果我删除了selectOneMenu,则一切正常(包括绑定到同一控制器属性的其他字段); ii)我的selectOneMenu的字段目标是非空字符串。这是我的代码:
<h:selectOneMenu id="brandAccess" value="#{myController.field}" title="" >
<f:selectItem itemValue="Item1" itemLabel="Item1" />
<f:selectItem itemValue="Item2" itemLabel="Item2" />
<f:selectItem itemValue="Item3" itemLabel="Item3" />
</h:selectOneMenu>
控制器:
@ManagedBean(name = "myController")
@SessionScoped
public class MyController implements Serializable {
private String field; //Makes no difference with new String()
public void setField(String field) { this.field = field; }
public String getField() { return this.field; }
}
编辑:
指示的问题有两个可能的根源:
1)控制器为null,无法访问或在xhtml文件中定义错误:不是这种情况。如果我删除此特定组件,则其他所有组件都可以正常工作。
2)字段不存在或为空:也不是。该字段确实存在,并且不为空。另外,尝试创建一个新字段,但仍然无法正常工作
更新
对于那些与Spring和JSF有相同问题的人:由于该问题被标记为重复,因此我无法回答。我的案例与涉及另一个问题的案例有些不同:问题是Spring并未创建我的控制器。由于某种原因,例如h:inputText
不会发生错误,而h:selectOneMenu
会发生错误。修复非常简单:只需使用@Controller
注释控制器(即使这不是Spring控制器),Spring将完成其余工作。