Primefacesを使用して、アプリをもう少し美しくしています。 p:commandButton
とh:commandButton
は同じようには機能しないことに気付きました。
p:commandButton
はメソッドを呼び出しますが、他には何も起こりません。 h:commandButton
はメソッドを呼び出し、ナビゲーションを返します。
p:commandButton
を使用しているときにログインボタンを押した後、リダイレクトに問題があります。どのように対処しますか?
更新パラメータがあります:
<p:commandButton value="Login" action="#{login.login}" type="submit" update="msgs" />
<p:commandButton>
が正しく機能するには、次のいずれかが必要です。
update
属性(AJAXリクエスト用)ajax="false"
通常の非ajax送信を行います。どちらもない場合、ボタンはデフォルトでAJAXリクエストをUIフィードバックなしで行います。
さらに、周囲の<h:form>
にはenctype
属性がありました。
私はカガタイメントが何だったと思う:
ページをナビゲートするnot:
<p:commandButton action="home.xhtml" value="Go Home"/>
動作(ページをリダイレクト):
<p:commandButton action="home.xhtml?faces-redirect=true" value="Go Home"/>
動作(ページをリダイレクト)
<p:commandButton action="home?faces-redirect=true" value="Go Home"/>
.xhtmlがweb.xmlで定義されたデフォルトの接尾辞である場合:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
詳細については、primefacesフォーラム、たとえば ナビゲーションに関するこの議論 をご覧ください。
私はそれが少し助けたことを願っています...
ナビゲーションを実行していて、リクエストがajaxで行われている場合は、リダイレクトを使用する必要があります。
私は同様の問題を抱えています。
Primefacesおよびprimefaces mobileを使用していますが、<p:commandButton>
をajax = "false"およびaction = "find.xhtml?faces-redirect = true"で使用すると、Firefoxでナビゲーションが失敗します。
Firefoxでも動作させる唯一の方法は、<h:commandButton>
を使用することです。
<h:commandButton value="#{msg.find}" process="find"
action="find.xhtml?faces-redirect=true" />
<h:commandButton
styleClass="btn btn-primary-active upgrade" data-dismiss="modal"
value="Upgrade Account"
action="profile.do?faces-redirect=true&tab=plan"
oncomplete="$('#freeGiftModal').hide();" process="@this" partialSubmit="true" immediate="true"/>
コマンドボタンを使用してプロファイルページに移動しましたが、うまく機能しています。
上記の解決策はどれもうまくいきませんでした。あなたはまだ簡単なjavascriptに行くことができます
<p:commandButton onclick="window.location.href =home.xhtml"
style="height: 20px" type="button" title="title" icon="ui-icon-transferthick-e-w"/>