JSF2 表单提交"目标无法访问,标识符"myModel"在提交时解析为仅空



我有一个非常奇怪的问题,即未解决bean,而只能在提交时解决。它在视图上正常工作,但是在提交时,它出现了,说标识符为null

我的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,
  • 删除显示的大部分字段(bar One-名称),
  • 再次通过RequestParam(但是我意识到我什至没有一开始就拿起,而且效果很好。

我发现很多不同的人有相同的最终错误,但情况却不相同。

所有人都没有喜悦。有人对可能是什么问题有任何想法?

我正在使用jboss 7.1.1. -final

上使用Arquillian进行测试。

任何帮助。

事实证明 - 罪魁祸首是日食。昨天浪费了整个下午之后,我今天早上尝试通过Maven进行测试,效果很好。

我曾尝试在Eclipse中清洁项目,但昨天似乎没有任何影响。今天再次这样做似乎清除了这个问题。

实际上,这个问题再次出现,我可以通过清洁项目再次解决。

: -/

可以尝试@managedBean?:

@ManagedBean(name="myModel")
@RequestScoped
public class MyModelImpl implements Model {
@Inject
@RequestParam("objectId")
private Long objectId;

// Getters & Setters for the various fields

//should save return some outcome?
public String save() {
    return "index.xhtml";
}
public String getName() {
   retrun "Your error shows that somewhere in your xhtml this property is called";
}
}

检查您的faces-config.xml是否在Web应用程序的根目录中的Meta-Inf目录中。

http://docs.oracle.com/javaee/7/api/javax/faces/webapp/facesservlet.html

最新更新