【问题标题】:jsf - retrieve parameters from ajax requestjsf - 从 ajax 请求中检索参数
【发布时间】:2012-05-03 06:49:00
【问题描述】:

如何向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真的是空的。我很抱歉浪费你们的时间伙计们。

【问题讨论】:

  • 什么是result.question.pK.longValueAsString
  • result 是我的 a4j:repeat 的 var 名称,getLongValueAsString()将 pk 对象作为字符串值重复

标签: ajax jsf parameters


【解决方案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 自动执行分配。 (马克斯·卡茨)

看这里Sending parameter to a Controller

最后一个

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

喜欢这个

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 2011-12-19
      • 1970-01-01
      • 2011-12-08
      • 2011-02-27
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多