我有一个非常奇怪的问题,一个 bean 没有解决,但只有在提交时才解决。它在视图上工作正常,但在提交时,它错误地说标识符为空
我的JSF
<h:form id="edit" styleClass="form">
<rich:panel>
<f:facet name="header">
<h:outputText value="Edit Data" />
</f:facet>
<rich:graphValidator value="#{myModel}" id="gv">
<rich:messages for="gv" />
<rich:messages id="goal-messages" globalOnly="true" />
<!-- form fields that reference #{myModel.fields} -->
<h:commandButton id="save" value="Save"
action="#{myModel.save}" />
</rich:graphValidator>
</rich:panel>
</h:form>
模型类
@Named("myModel")
@RequestScoped
public class MyModelImpl implements Model {
@Inject
@RequestParam("objectId")
private Long objectId;
// Getters & Setters for the various fields
public void save() {
// does nothing just now
}
}
我知道我应该将保存操作移到一个控制器中,一旦我让它工作,我就会这样做。我有另一个没有问题的工作实例(在另一个但相关的模块中)。事实上,我复制了代码以开始并根据需要进行了修改。
这个模块的主要区别在于我对它的命名与类不同。
视图加载正常,没有任何问题,但在提交时,我得到以下信息:
根本的例外是:
Caused by: javax.el.PropertyNotFoundException: /edit.xhtml @26,71 value="#{myModel.name}": Target Unreachable, identifier 'myModel' resolved to null
at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:133) [jsf-impl-2.1.7-jbossorg-2.jar:]
at org.richfaces.el.ValueExpressionAnalayserImpl$SetValueCommand.resolve(ValueExpressionAnalayserImpl.java:42) [richfaces-components-ui-4.2.2.Final.jar:4.2.2.Final]
at org.richfaces.el.ValueExpressionAnalayserImpl.resolveValue(ValueExpressionAnalayserImpl.java:64) [richfaces-components-ui-4.2.2.Final.jar:4.2.2.Final]
at org.richfaces.el.ValueExpressionAnalayserImpl.updateValueAndGetPropertyDescriptor(ValueExpressionAnalayserImpl.java:90) [richfaces-components-ui-4.2.2.Final.jar:4.2.2.Final]
at org.richfaces.validator.BeanValidatorServiceImpl.validateExpression(BeanValidatorServiceImpl.java:157) [richfaces-components-ui-4.2.2.Final.jar:4.2.2.Final]
... 41 more
记住它在查看页面时有效,我对为什么它在提交时不起作用感到非常茫然。
我尝试了各种方法,包括:
- 将范围更改为@ViewScoped,
- 删除显示的大部分字段(第一栏 - 名称),
- 再次传入 requestParam(但我意识到我什至没有被放在首位,它工作正常。
我发现很多不同的人都有相同的最终错误,但情况不同。
一切都没有喜悦。有人对可能是什么问题有任何想法吗?
我正在 JBoss 7.1.1.Final 上使用 Arquillian 进行测试
任何帮助表示赞赏。