私は私のwebappにこの作業コードを持っています:
<h:button value="Edit user..." outcome="/public/user" >
<f:param name="userName" value="#{authBean.authUser}"/>
</h:button>
機能:
- ボタンにGETを送信させます
- 指定されたパラメーターを URL に渡し、ブックマーク可能にします。
必要なもの:
- 上記の h:button のように動作するはずです (GET を送信)
- ボタンは、他の Primefaces ボタンのように見える必要があります (例: 画像で装飾されています... など)。
これは私が得ることができる最も近いものです:
<p:commandButton value="Edit user..." action="/public/user?faces-redirect=true" ajax="false" immediate="true" >
<f:param name="userName" value="#{authBean.authUser}"/>
</p:commandButton>
GET を使用して新しい URL にリダイレクトされる POST を送信します。ただし、パラメーターはプロセスで失われます。
別のアイデア:
<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml">
<f:param name="userName" value="#{authBean.authUser}"/>
</p:linkButton>
GET リクエストは中止され (??? Firebug によると)、現在のページが再度 POST されます。
これを行う適切な方法は何ですか?
更新:これは機能します(p:dataTableのない空のページで):
<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername">
しかし、これはしません:
<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername&secondParam=otherValue">
後者の結果は次のとおりです。
500: javax.servlet.ServletException: Error Parsing /sample0.xhtml: Error Traced [line: 14] エンティティ「secondParam」への参照は「;」で終了する必要があります デリミタ。
UPDATE2 : & はエスケープする必要があります:
<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername&secondParam=otherValue">
見た目は良さそうですが、それでも GET が中止され、POST が再送信されます。
代替テキスト http://img64.imageshack.us/img64/1017/primefaceslinkbutton.jpg
これは私が試してきた完全な空のページです:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head />
<h:body>
<h:form>
<p:linkButton value="Click me" href="http://stackoverflow.com" />
</h:form>
</h:body>
</html>
プライムフェイス 2.1 リリース。