1

データテーブルを表示できるページがあるシナリオがあります。データテーブル データはユーザーによって選択されますが、特定のデータをテーブルにロードするための直接 URL を提供できる必要があります。これを実現するために、URI で params を使用して、ロードする必要があるサービスを決定しています (www.example.com?service=1)。

ユーザーが 1 つのサービスをクリックすると、URL が www.example.com?service=2 に変わり、そのサービスからのデータが AJAX を介して読み込まれ、ページに表示されます。ポストバックなし、部分的なページの更新のみ。データテーブルのみをリロードする必要があるため、完全なページのリロードを回避したい。

  1. ページをリロードせずに、バッキング Bean から (つまり、www.example.com?service=1 から www.example.com?service=2 に) URL パラメータを更新するにはどうすればよいですか?
  2. ページを再送信せずに新しい URL パラメータを読み取るにはどうすればよいですか?

アップデート

現時点では、ページ全体をリダイレクトしています

FacesContext.getCurrentInstance().getExternalContext().redirect(url); 

を使用してパラメーターを読み込もうとしています

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("service"); 

しかし、それは私が実際に達成したいことではなく、多くの不要なデータをリロードしているため、ページ上の他のプロパティの管理がより複雑になります! パラメータを更新して読みたいのですが、データテーブルのみをリロードします。

4

1 に答える 1

0

私はJSfを初めて使用しますが、これが役立つと思います。これは簡単な例です:

<h:inputText>次のように、値としてオブジェクト プロパティを持つ があるとします。

<h:form id="formUser">
    <h:inputText value="#{userBean.name}" id="userName" />
</h:form>

ajax 呼び出しで name プロパティを更新する必要がある場合:

<h:commandButton value="Update user" action="#{userBean.updateUserName}">
    <f:ajax render="formUser:userName" execute="formUser:userName" />
</h:commandButton>

render 属性は、要素をページにリロードさせます。実行により、要素に値が設定されます。この場合は、のnameプロパティに設定されます。UserBean

このように、名前を入力してinputTextをクリックするとcommandButton、名前の set メソッドが実行され、ビューで入力が再レンダリングされるため、新しい値が表示されます。

しかし、ここに必要な場合は、linkここからの例です:

<h:link value="Login page + Param " outcome="login" >
    <f:param name="username" value="mkyong" />
</h:link>

それはあなたが本当に欲しいものですか?

于 2012-06-14T12:40:26.013 に答える