jsf - 从ajax请求中检索参数

时间:2012-05-03 06:49:01

标签: ajax jsf parameters

如何向a4j:commandLink添加参数?在我检查调试模式时,参数总是为空。

网页代码:

<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真的是空的。我很抱歉浪费你的时间。

2 个答案:

答案 0 :(得分:1)

1)这应该有效

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

JSF 2 param example

2)这里实现它的另一种方式

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

在bean中你只需要一个getter / setter,你不需要检索   自己的参数。 a4j:actionparam自动完成赋值。 (作者Max Katz)

看这里Sending parameter to a Controller

和最后一个

3)如果您使用EL 2及以上版本,可以将其作为参数发送到doDetailEvaluation

像这样

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

答案 1 :(得分:1)

我刚发现错误。 a4j-components没有任何问题,错误如下:我无法正确创建问题对象。所以PK真的是空的。我很抱歉浪费你的时间。