0

如何将参数添加到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真的是空的。我很抱歉浪费你们的时间伙计们。

4

2 回答 2

1

1)这应该工作

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

JSF 2 参数示例

2)这里有另一种实现方式

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

在 bean 中你只需要一个 getter/setter,你不需要自己检索参数。a4j:actionparam 自动执行分配。(马克斯·卡茨)

看这里将参数发送到控制器

最后一个

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

像这样

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

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

于 2012-05-04T05:09:22.500 回答