0

にパラメータを追加するにはどうすればよいa4j:commandLinkですか?デバッグモードでチェックインすると、パラメータは常にnullになります。

ウェブコード:

<a4j:form>
    <a4j:commandLink reRender="content" action="#{surveyEvaluationBean.doDetailEvaluation}">
        <f:param name="question" value="#{result.question.pK.longValueAsString}" />
        <h:graphicImage url="/survey/img/cloverleaf.jpg" styleClass="srv-analysis-cloverleaf" />
    </a4j:commandLink>
</a4j:form>

豆:

HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
    String param = request.getParameter("question");

エラーが見つかりました。に問題はありませんa4j-components。エラーは次のとおりです。質問オブジェクトを正しく作成できませんでした。したがって、PKは実際にはnullでした。時間を無駄にしてすみません。

4

2 に答える 2

1

エラーが見つかりました。に問題はありませんa4j-components。エラーは次のとおりです。質問オブジェクトを正しく作成できませんでした。したがって、PKは実際にはnullでした。時間を無駄にしてすみません。

于 2012-05-04T05:09:22.500 に答える
1

1)これは機能するはずです

Map<String,String> params = 
    FacesContext.getExternalContext().getRequestParameterMap();
String question = params.get("question");

JSF2パラメータの例

2)ここでそれを達成する別の方法

<a4j:commandLink reRender="content" action="#{surveyEvaluationBean.doDetailEvaluation}">
   <a4j:actionparam name="question" value="#{result.question.pK.longValueAsString}"/>
</a4j:commandLink>

Beanでは、ゲッター/セッターのみが必要であり、パラメーターを自分で取得する必要はありません。a4j:actionparamは自動的に割り当てを行います。(マックス・カッツによる)

こちらをご覧くださいコントローラーへのパラメーターの送信

そして最後の1つ

3)EL 2以降を使用している場合は、パラメータとして送信できます。doDetailEvaluation

このような

<a4j:commandLink reRender="content" action="#{surveyEvaluationBean.doDetailEvaluation(result.question.pK.longValueAsString)}"/>
于 2012-05-03T06:59:51.690 に答える