javax.el.PropertyNotFoundException:无法到达目标,使用Spring Boot和JSF将标识符[MyController]解析为null

时间:2019-06-13 08:16:05

标签: spring-boot jsf el facelets

我遇到了一些对我来说没有意义的问题。尝试在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将完成其余工作。

0 个答案:

没有答案