我是JSF初学者,我有一个简单的JSF问题,但我无法解决这里的逻辑。我通过命令按钮打开新的mv.xhtml
页面如下:
<p:commandButton value="#{grBean.protocolName(item)}"
onclick="window.open('/SearchMap/faces/mv.xhtml?url=#{item}')">
</p:commandButton>
我有mvBean
,这是一个会话范围。我用一个函数得到url参数,函数在后置构造的init方法中调用。其方法是:
Map <String, String>tempMap= FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
if(tempMap.get("url") !=null)
url=tempMap.get("url");
问题在这里,因为mvBean
是会话范围的,所以init方法只被调用一次,所以我不能自然地获得一个新的url参数。
我想使用mvBean
作为sessionScoped,因为我希望将所有传递的urls保存在ArrayList中。
那么,当我使用会话bean时,如何获得url参数呢?或者你有什么建议或解决办法吗?
谢谢你帮忙。
发布于 2014-10-21 05:09:59
您不必在init()
中这样做,下面是一个快速的解决方案。把这个放在你的mv.xtml
页面上,在<h:form>
的某个地方
<p:remoteCommand name="onload" action="#{mvBean.checkUrl()}" autoRun="true" />
并将逻辑从init()
移到public void checkUrl()
。
https://stackoverflow.com/questions/26486879
复制相似问题