Jsf重定向到新窗口

发布于 2024-10-16 16:32:38 字数 873 浏览 1 评论 0原文

我正在使用 mojarra primefaces tomcat6.x 制作一个 JSF2.0 项目。

我创建了一个选择列表,当我选择列表中的项目时,我想重定向到所选的网址。它可以是内部 URL。

这是工作,但我想知道是否可以在新窗口中重定向。

我有以下代码 JSF:

        <h:form>
            <h:selectOneMenu onchange="this.form.submit();" valueChangeListener="#{wagent.selectBusinessTravelLink}">
                <f:selectItem itemLabel="#{msg['form.select.defaultValue']}" itemValue="" noSelectionOption="true"/>
                <f:selectItems value="#{wagent.businessTravelLinks}" var="bLinkItem" itemLabel="#{bLinkItem.label}" itemValue="#{bLinkItem.id}" />
            </h:selectOneMenu>
        </h:form>

Java:

   public void selectBusinessTravelLink(ValueChangeEvent event) {
// some stuff
FacesContext.getCurrentInstance().getExternalContext().redirect(targetUrl);
}

i'm making a JSF2.0 project using mojarra primefaces tomcat6.x.

I made a select list and when i select item of the list i want to redirect to the selected url. It can be an internal URL.

It's work but i want to know if it's possible to redirect in new window.

I have the following code JSF:

        <h:form>
            <h:selectOneMenu onchange="this.form.submit();" valueChangeListener="#{wagent.selectBusinessTravelLink}">
                <f:selectItem itemLabel="#{msg['form.select.defaultValue']}" itemValue="" noSelectionOption="true"/>
                <f:selectItems value="#{wagent.businessTravelLinks}" var="bLinkItem" itemLabel="#{bLinkItem.label}" itemValue="#{bLinkItem.id}" />
            </h:selectOneMenu>
        </h:form>

Java:

   public void selectBusinessTravelLink(ValueChangeEvent event) {
// some stuff
FacesContext.getCurrentInstance().getExternalContext().redirect(targetUrl);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

作死小能手 2024-10-23 16:32:38

使用 JavaScript 的 window.open() 函数而不是change 事件期间的 form.submit()

假设选择的项目值是完整的 URL,下面是一个示例:

<h:selectOneMenu onchange="window.open(this.options[this.selectedIndex].value)">

Use JavaScript's window.open() function rather than form.submit() during the change event.

Assuming that the select item values are fullworthy URL's, here's an example:

<h:selectOneMenu onchange="window.open(this.options[this.selectedIndex].value)">
灰色世界里的红玫瑰 2024-10-23 16:32:38

使用 onclick="this.form.target='_blank'" (或者在 onchange 中的情况),即,

<h:form id="form">
    <h:selectOneMenu onchange="this.form.target='_blank'; this.form.submit();" valueChangeListener="#{wagent.selectBusinessTravelLink}">
         <f:selectItem itemLabel="#{msg['form.select.defaultValue']}" itemValue="" noSelectionOption="true"/>
         <f:selectItems value="#{wagent.businessTravelLinks}" var="bLinkItem" itemLabel="#{bLinkItem.label}" itemValue="#{bLinkItem.id}" />
     </h:selectOneMenu>
 </h:form>

当然,不要忘记修复

Use onclick="this.form.target='_blank'" (or in your case in onchange), i.e.,

<h:form id="form">
    <h:selectOneMenu onchange="this.form.target='_blank'; this.form.submit();" valueChangeListener="#{wagent.selectBusinessTravelLink}">
         <f:selectItem itemLabel="#{msg['form.select.defaultValue']}" itemValue="" noSelectionOption="true"/>
         <f:selectItems value="#{wagent.businessTravelLinks}" var="bLinkItem" itemLabel="#{bLinkItem.label}" itemValue="#{bLinkItem.id}" />
     </h:selectOneMenu>
 </h:form>

And of course, don't forget to fix the id attribute in <h:form id="form">

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文