当前位置: 首页 > 知识库问答 >
问题:

JSF/PrimeFaces selectOneMenu更改url参数并重定向

嵇永望
2023-03-14

我正在使用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}&amp;color=red" itemLabel="Vehicle red " />
        <f:selectItem itemValue="viewVehicles.xhtml?vehicle=#{myViewController.vehicle}&amp;color=blue" itemLabel="Vehicle blue" />
        <p:ajax event="change" listener="#{selectOneMenuHeader.navigate}" />
    </p:selectOneMenu>
    </h:form>

ManagedBean:

private String outcome;

public void navigate() throws IOException {
    FacesContext.getCurrentInstance().getExternalContext().redirect(outcome);
}

共有1个答案

漆雕和雅
2023-03-14

您的<代码>

然后,您可以创建自己的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;"
 类似资料:
  • 问题内容: 我有这个网址: 我需要的是能够将“行”的url参数值更改为我指定的值,比方说10。如果“行”不存在,则需要将其添加到url的末尾并添加我已经指定的值(10)。 问题答案: 在学到很多东西之后的四年后,回答我自己的问题。特别是您不应该将jQuery用于所有功能。我创建了一个可以解析/字符串化查询字符串的简单模块。这使得修改查询字符串变得容易。 您可以按以下方式使用查询字符串:

  • 我对JSP/servlets相当陌生,我一直在研究一些东西,它已经工作了一段时间。我有一个名为'telgir.jsp'的jsp,我从这个jsp向一个名为'tel Kayit'的servlet传递一个URL参数。 在LocalHost上运行时JSP页面的一个示例URL: 当我在servlet中接收到参数时,参数发生了变化,因此无法正确地对其进行解码并获得结果。根据我的研究,我意识到“%”符号使我的代

  • 问题内容: 如何在不重定向页面的情况下更改URL地址? 例如,当我单击下面的链接时: 我将从链接中获取URL: 如果我在下面这样做,页面将被重定向: 我想做一个类似此站点的操作,当您单击图像时,ajax调用将获取请求的页面,并且窗口上的URL地址也将被更改,因此它具有用于单击的路径。 问题答案: 注意:现在受支持-请参阅其他答案。 您 不能 更改整个URL而无需重定向,您可以做的是更改 hash

  • 我正在尝试获得一个h:textInput以在更改时重播,我已经用a4j:ajax和f:ajax进行了尝试。 使用a4j:ajax时: 这在面板第一次更新后第一次起作用,它停止更新modell,并且监听器也没有被调用。但是,会触发渲染,从而显示旧值。 现在,当我用f:ajax替换a4j:ajax时,我得到一条错误消息,即在xyzInput中找不到id xyzPG。 当我尝试将重新渲染限制为input

  • 我知道这不是react router的默认行为/功能,可以帮助我们轻松地重新加载当前组件,但我真的需要在我的应用程序中使用它。 我的应用程序处理产品。我有一个可以加载的产品列表,当我单击某个项目时,它会显示相关的产品详细信息。 在该页面上,我有加载相同组件的相关产品链接,但有另一个产品详细信息,位于 我在我的组件willmount中获取数据,似乎如果我只更改URL,就不会装载新组件,因此,我总是显

  • 我正在使用JSF2.2,并配置了servlet过滤器。过滤器中工作的部分代码: 如果我添加第二个param-常规请求可以工作(发生重定向并看到两个param),但AJAX请求不能工作(没有重定向,什么也不发生)。以下是Firebug报告: 这是如何造成的,我们如何在filter中为AJAX调用设置多个参数?