作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JSF2 和 PrimeFaces。我如何编写 selectOneMenu 来调用 JSF 导航以将用户重定向到同一页面,但当他更改菜单中的选项时使用不同的参数?我只需要改变颜色。
来自网址:
<f:metadata>
<f:viewParam name="vehicle" value="#{myViewController.vehicle}"/>
<f:viewParam name="vehicle" value="#{myViewController.color}"/>
</f:metadata>
MyView.xhtml:(无工作)
<h:form id="selectOneMenuEdition">
<p:selectOneMenu id="selectOneMenuHeader"
value="#{selectOneMenuHeader.outcome}" >
<f:selectItem itemValue="viewVehicles.xhtml?vehicle=#{myViewController.vehicle}&color=red" itemLabel="Vehicle red " />
<f:selectItem itemValue="viewVehicles.xhtml?vehicle=#{myViewController.vehicle}&color=blue" itemLabel="Vehicle blue" />
<p:ajax event="change" listener="#{selectOneMenuHeader.navigate}" />
</p:selectOneMenu>
</h:form>
托管 bean :
private String outcome;
public void navigate() throws IOException {
FacesContext.getCurrentInstance().getExternalContext().redirect(outcome);
}
最佳答案
你的 <p:selectOneMenu>
绑定(bind)到 selectOneMenuHeader.outcome
,因此您只需要在您的 bean 中获取它的值。
然后您可以创建自己的 URL 以使用所需参数重定向用户。
例子(bean):
public void navigate() throws IOException {
String url = "yourPage.jsf?color=" + outcome;
FacesContext.getCurrentInstance().getExternalContext().redirect(url);
}
第二种解决方案是添加一个 javascript onchange 事件,通过采用当前选定的选项来重定向用户。
示例(普通 JS):
onchange="document.location.href='yourPage' + this.options[this.selectedIndex].value;"
关于JSF/PrimeFaces selectOneMenu 更改 url 参数并重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778590/
我是一名优秀的程序员,十分优秀!