2012-05-03 27 views
0

a4j:commandLinkにパラメータを追加するにはどうすればよいですか?デバッグモードをチェックインすると、このパラメータは常にnullになります。jsf - ajaxリクエストからパラメータを取得

Webコード:

<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だった。私はあなたの時間の人を無駄にして申し訳ありません。これが達成し

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

JSF 2 param example

2)ここでは別の方法を動作するはず

+0

「result.question.pK.longValueAsString'」とは何ですか? – Ved

+0

'result'はmy a4j:repeatのvar名で、' getLongValueAsString() 'はpk-objectを文字列の値として繰り返します –

答えて

1

私はエラーを検出しました。 a4j-componentsに何も問題はありません。エラーは次のとおりです。質問オブジェクトを正しく作成できませんでした。だから、PKは本当にnullだった。私はあなたの時間の人を無駄にして申し訳ありません。

1

1)それだけのgetter/setterメソッドを必要と豆で

<a4j:commandLink reRender="content" action="#{surveyEvaluationBean.doDetailEvaluation}"> 
    <a4j:actionparam name="question" value="#{result.question.pK.longValueAsString}"/> 
</a4j:commandLink> 
、あなたあなた自身が を取得する必要はありません。 a4j:actionparamは自動的に代入を行います。 (マックス・カッツによる)

こちらをご覧Sending parameter to a Controller

と最後の1

3)あなたはEL 2を使用し、上記の場合は、この

よう doDetailEvaluation

で、それをパラメータとして送信することができます

<a4j:commandLink reRender="content" action="#{surveyEvaluationBean.doDetailEvaluation(result.question.pK.longValueAsString)}"/> 
関連する問題