Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 在h:commandLink操作中传递查询参数值_Jsf 2_El - Fatal编程技术网

Jsf 2 在h:commandLink操作中传递查询参数值

Jsf 2 在h:commandLink操作中传递查询参数值,jsf-2,el,Jsf 2,El,试图通过jsf commandLink操作将查询参数值、参数名称targetURL传递给后端bean方法 当我执行以下操作时(用引号括住param.targetURL),文本param.targetURL将被传递给方法: <h:commandLink id="targetURLLink" action="#{commonTaskBean.redirectTo('param.targetURL')}" style="display:none" /> 我将上述代码更改为如下所示: &

试图通过jsf commandLink操作将查询参数值、参数名称targetURL传递给后端bean方法

当我执行以下操作时(用引号括住param.targetURL),文本param.targetURL将被传递给方法:

<h:commandLink id="targetURLLink" action="#{commonTaskBean.redirectTo('param.targetURL')}"  style="display:none" />
我将上述代码更改为如下所示:

<h:commandLink id="targetURLLink" actionListener="#{commonTaskBean.redirectTo}" style="display:none" >
    <f:attribute name="targetURL" value="#{param.targetURL}" />
</h:commandLink>    
这很奇怪,因为下面在屏幕上正确显示了targetURL参数的值:

<h:outputText value="#{param.targetURL}"/>

您的问题是双重的

首先,您面临的异常是由相对古老的ApacheEL版本中的一个bug引起的。它无法正确处理作为方法参数传递的
null
s。升级EL实现(或者更恰当地说,容器实现)应该可以解决这个问题

其次,您似乎对传递在使用表单打开页面时可用的请求参数感兴趣,而不是对在页面中提交表单时可用的请求参数感兴趣。将
#{param}
引用为EL方法参数方法是根本错误的。
#{param}
引用当前请求的请求参数映射。在提交表单时,这就是表单提交请求本身。您需要
。它是在带有表单的页面第一次呈现时进行计算的(作为证据,您实际上可以在HTML源代码中看到它)


通常,完整堆栈跟踪有助于查看它是您自己的代码中的bug还是库中的bug。通常,完整堆栈跟踪本身也代表了整个答案(关键是我们能够用外行的术语向您解释它)。你最好不要从问题中忽略堆栈跟踪,好像它与装饰无关。@BalusC:我更新了我的帖子,加入了相关的堆栈跟踪。由于某种原因,我今天遇到了一个不同的错误。这是ApacheEL中的一个错误。在当前版本中,它已经被修复了很长时间。您不清楚使用的是哪个容器,不幸的是,堆栈跟踪中忽略了暗示它的部分,但如果是Tomcat,则只需将其升级到最新版本。谢谢。我正在使用WebSphere8.0。升级websphere需要相当多的工作和协调。您知道有什么解决方法吗?这取决于您是希望在显示带有表单的页面时传递可用的参数,还是在页面中提交表单时传递可用的参数。代码实际上是后者,但您的问题/问题表明了前者(不仅仅是因为这是一种获取post数据的奇怪方式)。
<h:commandLink id="targetURLLink" actionListener="#{commonTaskBean.redirectTo}" style="display:none" >
    <f:attribute name="targetURL" value="#{param.targetURL}" />
</h:commandLink>    
String targetURL = (String) event.getComponent().getAttributes().get("targetURL");
<h:outputText value="#{param.targetURL}"/>
<h:commandLink ... action="#{commonTaskBean.redirectTo}">
    <f:param name="targetURL" value="#{param.targetURL}" />
</h:commandLink>