在两个 JSF 视图 xhtml 之间(都有视图范围的支持 bean),如果用户单击链接或按钮,我想传递参数。如果我有一个带有 JavaScript 函数的属性 onclick 来打开另一个页面(在这个页面中我想使用在第一页中设置的参数)到 commandButton 或 commandLink 我得到的f:param
属性是\'currentAccess\':\'3\',\'gridNo\':\'5\',
,如果我没有onclick 属性我做对了'currentAccess':'3','gridNo':'5',
如果我有:
<h:commandButton action="#{statisticsBean.showAccessIncorectAnswers()}" target="_blank"
value="#{strings.whatHaveDoDoneWrong}" rendered="#{o.date != '-' and o.answerNoWrong != 0}">
<f:param name="currentAccess" value="#{o.currentAccess}"/>
<f:param name="gridNo" value="#{o.noGrid}"/>
<f:param name="gridCategory" value="#{o.category}"/>
</h:commandButton>
HTML 渲染看起来像:
<input type="submit" name="j_idt73:0:j_idt74:j_idt77" value="Ce ai gresit" onclick="mojarra.jsfcljs(document.getElementById('j_idt73:0:j_idt74'),{'j_idt73:0:j_idt74:j_idt77':'j_idt73:0:j_idt74:j_idt77','currentAccess':'1','gridNo':'5','gridCategory':'Drept Procesual Civil'},'');return false" />
这很好,我可以访问参数(f:viewpara 或 FacesContext,我使用最后一个 like FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("currentAccess")
)
但是 如果我有:
<h:commandButton action="#{statisticsBean.showAccessIncorectAnswers()}" target="_blank"
onclick="confirmGridStatistics('#{strings.doYouWantToSeeTheWrongAnswersInAccessNo} #{o.currentAccess} #{strings.fromDate} #{o.date}?');"
value="#{strings.whatHaveDoDoneWrong}" rendered="#{o.date != '-' and o.answerNoWrong != 0}">
<f:param name="currentAccess" value="#{o.currentAccess}"/>
<f:param name="gridNo" value="#{o.noGrid}"/>
<f:param name="gridCategory" value="#{o.category}"/>
</h:commandButton>
在 onclick 事件中使用 JavaScript 函数,我得到了渲染:
<input type="submit" name="j_idt73:2:j_idt74:j_idt77" value="Ce ai gresit" onclick="jsf.util.chain(this,event,'confirmGridStatistics(\'Vrei sa vezi raspunsurile gresite in accessul 3 din data de 16-05-2013?\');','mojarra.jsfcljs(document.getElementById(\'j_idt73:2:j_idt74\'),{\'j_idt73:2:j_idt74:j_idt77\':\'j_idt73:2:j_idt74:j_idt77\',\'currentAccess\':\'3\',\'gridNo\':\'5\',\'gridCategory\':\'Drept Procesual Civil\'},\'\')');return false" />
在第二个视图支持 bean 中,我null
从 FacesContext 获取参数。这是为什么?
更新 我以为
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().put("currentAccess", access);
在action方法中谁可以解决它。但它没有,它给了我一个java.lang.UnsupportedOperationException
我不知道为什么会这样。