3

私はjsf 2を使用しています。faceletファイルに外部URLを指すリンクがあります。私の現在のビューは /app1/home.xhtml で、ah:commandLink はそのようなアクションを持っています

<h:commandLink value="#{link}" action="#{action.redirect}" target="_blank"/>

action.redirect がリダイレクトする URL は /app2/info.do です。ただし、JSF は URL の拡張子を .xhtml に変更しようとしているようです。エラーメッセージで失敗します。

com.sun.faces.context.FacesFileNotFoundException: /app2/info.xhtml がリソースとして ExternalContext に見つかりません

これを正しくリダイレ​​クトするにはどうすればよいですか?

4

1 に答える 1

6

ここでは使用しないでください<h:commandLink>。目的に対して間違ったタグです。これは、JSF POSTフォームを送信してJSFビューに移動するように設計されていますが、どちらもこの特定のユースケースでは明らかに発生させたくありません。

<h:outputLink>またはプレーンHTMLを使用するだけ<a>です。それで、

<h:outputLink value="#{action.redirect}" target="_blank">#{link}</h:outputLink>

また

<a href="#{action.redirect}" target="_blank">#{link}</a>

<h:form>どちらのアプローチでも、は必要ないことに注意してください。

于 2012-09-11T20:26:40.517 に答える