4

Idに基づいて適切な「編集」ページにリダイレクトすることになっているa4j:commandButtonがあります。これは、次のようにパラメーターとして渡します。

<h:commandButton action="/details.jsf?faces-redirect=true" value="details">
    <f:attribute name="id" value="#{bean.id}" />
</h:commandButton>

問題は、それが機能しないことです。また、f:attributeを "f:param name =" id "value ="#{bean.id} ""に置き換えようとしましたが、失敗しました。私が仕事に取り掛かったのはoutputLinkだけです。

<h:outputLink  value="/details.jsf">
    link
    <f:param name="id" value="#{bean.id}" />
</h:outputLink>

しかし、私はリンクに本当に満足していないので、commandButtonを機能させる方法はありますか?

ああ、私はリダイレクト後にその「id」を取得することになっているBeanも持っています:

@PostConstruct
public void init(){
    id= resolve("id");
}
4

2 に答える 2

6

BalusCによるJSFでのコミュニケーションに関するこの記事をご覧ください

f:paramh:commandLinkおよびでのみ機能しh:outputLinkます。

非表示の入力を使用できます。

<h:form>
    <h:commandButton action="/details.jsf?faces-redirect=true" value="details"/>
    <input type="hidden" name="id" value="#{bean.id}" />
</h:form>

そして、あなたのfaces-configでは、リクエストスコープだと思います。JSF2の注釈を使用する場合は、これを適切な注釈に変換するだけです。

<managed-bean>
    <managed-bean-name>bean</managed-bean-name>
    <managed-bean-class>mypackage.Bean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <property-name>id</property-name>
        <value>#{param.id}</value>
    </managed-property>
</managed-bean>

明らかに、バッキングBeanのそのフィールドのゲッターとセッターが必要です。

または、CSSを介してリンクをボタンとして「ペイント」してみてください。

于 2010-07-19T11:44:58.407 に答える
1

私のJSFが非常に錆びていない限り、コマンドボタンまたはコマンドリンクのaction属性を使用して、faces-config-navファイルで定義された結果文字列を指定するか、結果を返すBeanのメソッドを指す必要があります(またはリダイレクト/何でも)。

あなたの場合、別のページにリダイレクトしたい場合は...設定ファイルでナビゲーションリンクとして定義する必要があります(redirect必要に応じて)。次に、アクションボタンに次のようなものがあります

<h:commandButton action="showDetails" value="details">

..。

<navigation-case>
        <from-outcome>showDetails</from-outcome>
        <to-view-id>/details.jsf?faces-redirect=true</to-view-id>
</navigation-case>

余談ですが、<f:atribute>タグは機能しますが、コンポーネントに属性を設定するだけです。したがって、Beanのコマンドボタンを押したままにすると、名前で属性値を取得できる可能性があります。リクエストパラメータを渡すには、前述のパコラのような隠しフィールドテクニックを使用します

于 2010-07-19T13:18:15.620 に答える