4

私はそれをどこかで読んだことがあります

開発者はコントローラーと統合できる Action オブジェクトを作成することで Struts コントローラーにアクセスできますが、Java Server Faces テクノロジーではコントローラーへのアクセスは許可されません。

誰でも私のためにこれを詳しく説明してもらえますか?それはどういう意味ですか?どんな例でも大きな助けになるでしょう.

また

Struts コントローラーは、ユーザーの役割に基づいて各アクションのアクセス制御などを行うことができます。この機能は、JSF では提供されません。

この点でも私は混乱しています。例を挙げてこれを説明してください。

4

2 に答える 2

0

Struts 2 (Struts の場合も同様) のコーディングを行う場合、コントローラー自体でフレームワークを拡張します。独自のアクションで拡張する基本クラスである Action を使用すると、通常はビジネス ロジックを呼び出してから結果ビューの 1 つにリダイレクトすることにより、コントローラー ロジックを拡張できます (「結果」として知られているs2 ) そのロジックの結果に基づいています。もちろん、アクションに対するアクセス制御などを実行できます。しかし、あなたはアクションで何でもすることができます。この引用のスニペットは、Struts 2 の概念的な粒度がアクション (コントローラー) のリクエストごとのインスタンスと同期していることを指摘しているだけだと思います。

JSF に関して言えば、まったく異なるタイプのフレームワークです。Struts 2 のような「リクエスト」指向ではなく、「コンポーネント指向」です。これは、JSF の概念的な粒度が、ページ上のコンポーネント ウィジェットの概念であることを意味します。これは、struts 2 が単一の要求の処理に関してすべてを行う方法とは、どういうわけか異なるレベルにあるか、またはおそらく直交しています。そのため、JSF では、フレームワークがコントローラーのロジックをより深く隠しています。これは主に、コントローラーのロジックがより複雑であるためです。コントローラ ロジックは、リクエストから受信データを取得し、リクエストに関連付けられたページの適切なコンポーネント ウィジェットにマッピングして配信する必要があります。開発者 API はすべて、コンポーネント コントラクトに関するものです。

于 2012-11-13T15:36:16.660 に答える
0

例を挙げます。次のようなフォームの jsp ファイルがあるとします。

<form name="myform" id="myform" action="<%=formAction%>" method="post">

</form>

いくつかの入力が含まれています。jsp の上で、次のようにアクションを定義できます。

<portlet:actionURL var="formAction">
<portlet:param name="action" value="submitForm"/>
</portlet:actionURL>

したがって、そのフォームの送信ボタンをクリックすると、コントローラーの processAction メソッドは、次のように、そのアクションに対して定義したことを実行します。

String action = request.getParameter("action");
if ("submitForm".equals(action)) {

   //do something

}

よろしく!

于 2012-11-14T13:06:12.850 に答える