0

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 に変更し、
  • 表示されるフィールドの大部分を削除します (バー 1 - 名前)。
  • もう一度 requestParam を渡します (しかし、そもそも私が拾われていないことに気付きました。それはうまくいきます。

同じ最終的なエラーを抱えているが、同じ状況ではない多くの人々を見つけました。

すべてに喜びはありません。何が問題なのか考えている人はいますか?

JBoss 7.1.1.FinalでArquillianを使用してテストしています

どんな助けでも感謝します。

4

3 に答える 3

2

結局のところ、犯人は日食でした。昨日の午後を無駄にした後、今朝 maven でテストを実行してみましたが、うまくいきました。

私は日食でプロジェクトを掃除しようとしましたが、昨日は何の効果もないようでした。今日もう一度やると、問題が解決したようです。

実際、問題が再び発生しましたが、プロジェクトをクリーンアップすることで再び修正できました。

:-/

于 2012-11-08T10:51:14.317 に答える
0

faces-config.xml が Web アプリケーションのルート ディレクトリの META-INF ディレクトリにあることを確認します。

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

于 2013-11-01T14:28:44.220 に答える
0

@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";
}
}
于 2012-11-08T00:42:58.493 に答える