1

私は JSF とプライムフェイスが初めてで、次のことをしようとしています: 2 つの日付を含む URL を作成し、それを新しいページで開く必要があります。私はプライムフェイスを使用しているので、2 つの p:calendar コンポーネントと ap:commandButton を作成します。

私の問題は、カレンダーを検証し、その後、同じウィンドウで URL を開くことができたことです。コマンドボタンに ajax="false" を設定し、フォームに target="_blank" を設定すると、新しいページで URL が開きますが、カレンダーの値が無効な場合は、元のページも新しいページで開きます検証メッセージのあるページ。リダイレクトには、Bean で FacesContext.getCurrentInstance().getExternalContext().redirect(URL) を使用します。

また、h:outputLink を使用してリダイレクトを試み、その値を bean.url および target="_blank" に設定しました。新しいページにリダイレクトされますが、この場合、カレンダーを検証できませんでした。

これどうやってするの?
ありがとう!

4

1 に答える 1

1

検証に応じて、条件付きで<h:outputScript>with をレンダリングします。window.open()

<h:form>
    <p:calendar validator="yourValidator" />
    <p:calendar validator="yourValidator" />
    <p:commandButton action="#{bean.submit}" update="@form" />
    <h:outputScript rendered="#{facesContext.postback and not facesContext.validationFailed}">
        window.open('someURL');
    </h:outputScript>
</h:form>

または PrimeFaces を次のように使用RequestContext#execute()しますwindow.open()

public void submit() { 
    RequestContext.getCurrentInstance().execute("window.open('someURL');");
}
于 2012-07-16T13:20:11.803 に答える