2010-12-09 13 views
0

簡単に何をしたいですか:Struts2 - これを行うことはできますか、それともフレームワークの制限ですか?

私はいくつかの変数の値に関して読み込まれたメニューを持っています。

<s:div cssClass="menu_table" id="loginContent"> 
    <c:choose> 
     <c:when test="${not action.loggedOn}"> 
      <s:form action="checkLogin" theme="simple"> 
       <span id="err" class="menu_err"> 
        <s:property value="error" /> 
       </span> 
       <s:textfield name="nickname" /> 
       <s:password name="password" /> 
       <span class="menu_span"> 
        <sj:submit targets="loginContent" value="Login" /> 
       </span> 
      </s:form> 
     </c:when> 
     <c:when test="${action.loggedOn}"> 
      <s:form action="checkLogout" theme="simple"> 
       <s:label cssClass="menu_title" value="Ciao #{nickname}" /> 
       <span class="menu_span"> 
        <sj:submit targets="loginContent" value="Logout" /> 
       </span> 
      </s:form> 
     </c:when> 
    </c:choose> 
</s:div> 

動作は非常に簡単です::action.loggedOnがtrueの場合、私は他のコードの一部、別のものをロードし、私は私たちのコードをお見せしましょう。

私はそれぞれをロードするときに、エラー変数(文字列)の値とloggedOnの値を変更するAJAX呼び出し(JQueryサポートを使用)をサーバーに行うことができます。ブール値です)。

私は(このフレームワークを使用して)知りたいのは、可能であれば、サーバー上でこの部分のコードを直接実行し、クライアントでこれをリロードすることです。 (言い換えれば、私は、jspページのサーバー側を実行することが可能であることを確認します(標準リクエストの場合は今回はajaxを使用し、コードの一部のみをクライアントにレンダリングします)。

または思う)私はクライアント側の関数を作成し、AJAX呼び出しの後の文字列結果のために私のdivを(JSON変数、または他のJquery関数を使用して)再描画する必要がありますか?

JSFと他のフレームワークを使用すると、最初のオプションが可能です。私はStrutsでもこれを行うことができますか?希望は私の質問は明確です:)

ちょっとだけ。あなたがあなたの記事で

答えて

1

を示唆しているものを再描画オプションのために行く必要が何を求めてすることはできません私の知識を1として

おかげ

+0

のようなあなたの行動の何かにJSONまたはHTMLを送信する方法 –

+0

@umesh awasthi確かに、私はそれを行うための最善の方法だと思います:) – Javi

+0

最も受け入れられた方法と熟練したものに同意します –

1

私はクリーンな方法は、新しいメソッドを作成することだと思いますコントローラはちょうどあなたが質問に表示するものとしてメニューの一部のjspを返します。あなたは、AJAX呼び出しを行い、その後、新しいJSPあなたのメニューのコンテナにロードできます

$.ajax({ 
    url: 'yourUrl', 
    success: function(html){ 
     $('#menuContainer').html(html); }, 
    error: function() { 
     alert('There was an error!'); } 
    }); 

JSPは、常にサーバーで実行されるJavaScriptはクライアントで実行されている間。しかし、コントローラ内にいくつかのメソッドを作成して、ページ全体をレンダリングして1つのパーツだけを更新することができます。

編集:同じコントローラメソッド

<action name="HelloWorld" class="vaannila.HelloWorld"> 
    <result name="sendJson" type="json"/> 
    <result name="sendHTML">/url/yourjsp.jsp</result> 
</action> 

intheと、彼はすでに彼のポストに提案したものを再塗装何かがあるこの

public String execute(){ 
    if(json){ 
     return "sendJson"; 
    } 
    if(html){ 
     return "sendHTML"; 
    } 
} 
関連する問題