2011-07-31 9 views
0

struts2タイル・プラグインを使用してプロジェクトをコンポーネント化したいとします。struts2タイル・プラグインに問題があります。

<tiles-definitions> 
<definition name="indexBaseLayout" template="/indexBaseLayout.jsp"> 
    <put-attribute name="title" value="" /> 
    <put-attribute name="topBar" value="/topbar.action" /> 
    <put-attribute name="catalog" value="" /> 
    <put-attribute name="searchForm" value="" /> 
    <put-attribute name="main" value="" /> 
    <put-attribute name="footer" value="" /> 
</definition> 
<definition name="regInput.tiles" extends="indexBaseLayout"> 
    <put-attribute name="title" value="注册" /> 
    <put-attribute name="main" value="/reg/input.action" /> 
</definition> 
<definition name="regSuccess.tiles" extends="indexBaseLayout"> 
    <put-attribute name="title" value="注册" /> 
    <put-attribute name="main" value="/reg_success.jsp" /> 
</definition> 
<definition name="index.tiles" extends="indexBaseLayout"> 
    <put-attribute name="title" value="主页" /> 
    <put-attribute name="main" value="/index.jsp" /> 
</definition> 

そして、このようなstruts.xmlの一部:私は書かれているtiles.xmlファイルは、このようなものです ご覧のとおり

<package name="main" extends="struts-default" namespace="/"> 
    <action name="topbar" class="topBarAction"> 
     <result name="success">/topbar.jsp</result> 
    </action> 
</package> 

、私はいくつかのアクションのURLを入れてプットアトリビュート値。私はそれらがストラットアクションとして実行され、返された結果ビューを表示すると考えました。しかし、実際には、tilesプラグインは "xxxx.action"をファイルとして認識します:java.io.FileNotFoundException:要求されたリソース(/bookstore/topbar.action)は利用できません。 アクションの結果ビューをタイルレイアウトに挿入するソリューションはありますか?

答えて

0

私が知る限り、タイル定義からアクションを実行することはできません。

他のすべてのタイルの結果でレンダリングする前にこのjspでロジックを実行しようとしている場合は、jsonプラグインなどを使用してstrutsアクションへの非同期jquery呼び出しを使用することもできます。

あなたの最終目標がここにあるかどうかわかりません。あなたが撮影しているものを説明できる場合は、おそらく私はもっと助けることができます。

EDIT:あなたのタイルの定義ではJSP

に条件文を使用してさらに定義あなたは通常通りJSPを参照します:

<definition name="indexBaseLayout" template="/indexBaseLayout.jsp"> 
    <put-attribute name="title" value="" /> 
    <put-attribute name="topBar" value="/topbar.jsp" /> 
    <put-attribute name="catalog" value="" /> 
    <put-attribute name="searchForm" value="" /> 
    <put-attribute name="main" value="" /> 
    <put-attribute name="footer" value="" /> 
</definition> 

をJSPで使用すると、支柱の上にレンダリングするものをベースでしょうタグ条件:

<s:if test="%{#session.user != null && #session.user.Authenticated"}> 
    Welcome <s:property value="%{#session.user.name}" /> 
</s:if><s:else> 
    <%-- Login form goes here --%> 
</s:else> 

このソリューションでは、セッション中のユーザーオブジェクトを確認する方法が提供されます。私はたぶん個人情報オブジェクトを個人的に維持しているでしょう。ユーザーオブジェクトがnullであるか、認証されたブール値がfalseの場合、それはそれ以外の場合は、ウェルカムメッセージと、おそらくログアウトボタンが表示されます、フォームでログを表示します。

+0

私のページにトップバーがあります。バー内の情報は、ユーザーがログインしているかどうかに依存している。彼はまだログインしていない場合は、ログインリンクがログアウトリンクが表示され、また、文字列「歓迎」+ userNameになります他、表示されます。私は長い間、グーグルでグーグルで挑戦し、タイルデフレーションでアクションを実行する方法を見つけました。ただ、 web.xml内のインナーStruts2のフィルタマッピングタグを含める REQUEST追加します。それは動作しますが、私は理由を知らない。 –

+0

私は、その中に条件タグはブール値用のユーザーオブジェクトに対してテストするいくつかのストラットと標準のjspを使用することをお勧めし多分にisAuthenticated()。私はここでログイン状態の問題で質問に答え:http://stackoverflow.com/questions/6906894/struts-2-session-management-and-dynamically-displaying-jsps/6935182#6935182 –

+0

はさらに明確化のための私の編集を参照してください –

関連する問題