2

ページのDIVオーバーレイに含まれているStruts2フォームがあります。このフォームを送信するときは、フォームの下部にある非表示のテキスト領域を非表示/表示して、フォームが送信されたことをユーザーに知らせるだけにします。そこから、ユーザーはオーバーレイを閉じて作業に戻ることができます。これを達成するのに問題があります。SUCCESSまたはの返品時に、返品時にNONE別のページを提供しない場合、ページは空白のページにリダイレクトされます。フォームを送信して、リダイレクトせずに同じページ内にとどまるにはどうすればよいですか?

現在、JavaScriptを使用してフォームを送信しています

document.forms['formName'].submit(); 

<s:submit/>フォームを送信する前にフォーム自体に設定する必要のある他のパラメーターがあるため 、オプションではなくJavaScriptを使用しています。

4

2 に答える 2

3

必要なのは:AJAXです。

<sx:div>Struts2では、(Struts 2.1以降非推奨ですが、まだここで機能しています)Struts2-Dojoプラグインを使用して、すぐに使用できます。

基本的に、dojoトピックでdivをターゲットにすると、アクションの結果、HTML / JSPスニペットを含むJSPファイルが、ページをリロードせずにdivを埋めます。

ただし、最新バージョンのStruts2を使用している場合は、Struts2-jQueryプラグインを使用してこれを簡単に実現できます。また、コードを使用したすべての実用的な例は、ショーケースにもあります。

これは例です:

<s:url id="ajax" value="/ajax1.action"/>
<sj:div href="%{ajax}" indicator="indicator">
       <img id="indicator" src="images/indicator.gif" 
            alt="Loading..."    style="display:none"/>
</sj:div>

とても簡単 :)

実行時にパラメータを設定する必要がある場合は、明らかにhref属性を変更することもできjavascriptます... IDごとにIDを取得し、href属性を変更するだけです。

于 2013-01-28T22:39:07.920 に答える
0

Ajax呼び出しを使用する必要があります。以下の例をご覧ください。

Struts.xml構成:

    <action name="**ActionName**" class="**Actionclass**"   method="**Method-calling**">
        <result type="stream">
            <param name="contentType">text/html</param>
            <param name="inputName">inputStream</param>
        </result>
        <result name="input">/Error.jsp</result>
    </action>
</package>

アクションクラス パブリッククラスActionClassはActionSupportを拡張します{プライベートInputStreaminputStream;

public String **Method-calling()** 
{
    //Calling Business Logic
            if(Business logic check condition)
                 {
         inputStream=new StringBufferInputStream("return x");               
                 }
    else
         {
         inputStream=new StringBufferInputStream("return y");
         }
    return SUCCESS;
}

public InputStream getInputStream() 
{
    return inputStream;
}
public String execute() 
{
    return SUCCESS;
}

}

HTMLファイル Ajax呼び出しの例

jQuery('***#replace-with-tag-id***').on('***blur(can  be any action)***', function() {
    var varE = jQuery('***#replace-with-tag-id***').val();
        jQuery.ajax({
            method:"GET",
            url: "***Actoin-name-struts.xml***.action", //"callAJax.action",
            data: "email="+varEmail,
            success: function(data) 
                                    {
                if(""+data == "return x") 
                                    {
                                    alert("x has been returned");
                } 
                                else 
                                    {
                                    alert("y has been returned");
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown){
                alert('Error=' + textStatus);
                alert("errorThrown"+errorThrown);
                alert("response text = "+XMLHttpRequest.responseText);
            }

        });
    } 
}).trigger('blur');

私はあなたの疑問を解消したことを願っています。

于 2013-01-28T22:53:59.897 に答える