首页 > 解决方案 > javax.el.PropertyNotFoundException:目标无法访问,标识符 [MyController] 使用 Spring Boot 和 JSF 解析为 null

问题描述

我面临一些对我来说没有意义的问题。尝试在 jsf 页面中使用 selectOneMenu 时,出现“标识符解析为空”。

我确实知道当控制器未解析或字段为空时会发生这种情况,但是: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) 控制器为空,不可访问或在 xhtml 文件中定义错误:情况并非如此。如果我删除这个特定组件,其他一切都正常。

2)字段不存在或为空:也不是这种情况。该字段确实存在并且不为空。另外,尝试创建一个新字段,但仍然无法正常工作

更新

对于与 Spring 和 JSF 有相同问题的人:我无法回答,因为问题被标记为重复。我的情况与其他问题的情况有些不同:问题是 Spring 没有创建我的控制器。出于某种原因,例如,错误不会发生h:inputText,但会发生h:selectOneMenu. 修复非常简单:只需使用@Controller(即使这不是 Spring 控制器)注释控制器,然后 Spring 将完成其余的工作。

标签: spring-bootjsfelfacelets

解决方案


推荐阅读