5

私は私のwebappにこの作業コードを持っています:

<h:button value="Edit user..." outcome="/public/user" >
    <f:param name="userName" value="#{authBean.authUser}"/>
</h:button>

機能:

  1. ボタンにGETを送信させます
  2. 指定されたパラメーターを 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&amp;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 リリース。

4

2 に答える 2

3

PrimeFaces 2.2. では、linkBut​​ton を廃止し、p:button を導入します。チケットを発行します。

http://code.google.com/p/primefaces/issues/detail?id=1037

于 2010-07-26T22:24:42.593 に答える
1

を使用しp:linkButtonます。


更新: コード例の更新に従って、URL はhref属性ではなく属性で指定する必要がありますurl。上記でリンクしたコンポーネントのドキュメントも参照してください。

少なくとも、同期ではなく非同期 (Ajax) GET 要求を発行しているように見える症状です。リクエストが別のドメインで起動されると、FireBug は実際にこの種のエラーを出します。

linkBut​​ton のデフォルトの動作を妨げたり、衝突させたりしている Javascript が他にありませんか? ボタンは単純な でナビゲートしていonclick="window.location=newurl;"ます。


更新 2:シンプルなページでスタンドアロンでテストすると動作しますか? 例えば

<!DOCTYPE html>
<html xmlns="http://www.w3c.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Test</title>
    </h:head>
    <h:body>
        <p:linkButton value="test" href="http://stackoverflow.com" />
    </h:body>
</html>
于 2010-07-26T13:23:19.777 に答える