0

現在、Struts2 を使用して MVC Java Web アプリを作成しています。

私のアプリの 1 つの要素は、フォームを介していくつかの結果を検索しています。ユーザーがフォームを送信すると、アクションがデータベースから必要な値を取得し、マップに入力します。

Map<Integer,List<String>> values = new HashMap<Integer,List<String>>();

各行の列値のリストがあります。

このアプローチに従うことで、結果ボックスの結果を表示するための汎用 JSP を使用できます。

<s:div cssClass='resultContainer'
cssStyle=' min-height: 150px; max-height:%{header}px; overflow: auto; %{display}; '
theme="qxhtml">


<table id='resultTable'>
    <tr id='tableHeader'>
        <s:iterator value="headers">
            <th><s:property /></th>
        </s:iterator>
    </tr>
    <s:iterator value="values">
        <tr class='results'>
            <s:iterator value="value">
                <td><s:property escape="false" /></td>
            </s:iterator>
        </tr>
    </s:iterator>
</table>

これは悪いアプローチだと今は感じています。代わりに、マップを ResultBoxRow オブジェクトのリストに変更する必要があります。各 ResultBox には、1 つの一般的なビュー Jsp ではなく、独自のビュー Jsp があり、オブジェクトを反復処理して出力することができます。たとえば、次のようになります。

<s:iterator value="value">
<td><s:property name="firstname" /></td>
<td><s:property name="lastname" /></td>

テーブル ヘッダーの場合、特定のヘッダーに個別のスタイル プロパティを指定する必要がある場合があります。これらは、JSP がそのヘッダーのスタイルを含むコントローラーから値を参照するようにするのではなく、JSP 自体で定義する必要があると思います。

私の全体的な質問は、コントローラーがビューの要素のスタイル/表示をどの程度制御する必要があるかということだと思いますか? たとえば、行の「スタイル」タグに入れる値ではなく、タグに表示される個々の要素を生成するだけでよいと思います。これにより、すべての結果ボックスを処理するために単純な単一の JSP が犠牲になったとしても。

ご意見をいただけると有難いです。

4

1 に答える 1

0

コントローラーは、表示メカニズムとは何の関係もありません。それが MVC のポイントであり、データをその表示から完全に分離することです。

カスタム タグ、インクルード、テンプレートなどを介してビュー レイヤーを DRY することもできます。スタイルは属性として渡すことができますが、基になる DOM は単一のページまたはテンプレートによって作成されます。

また、渡したい属性の性質も重要です。モデルまたはコントローラーから論理的に取得できるセマンティックであれば、問題ありません。色、幅などのように、純粋に表示上のものである場合、モデルまたはコントローラーには関係ありません。

于 2013-05-29T12:58:05.740 に答える