開発者ドキュメント

Struts 2 例

ダウンロードする – リンク://wp-content/uploads/2010/06/Struts2-Double-Select-Example.zip[Struts2-Double-Select-Example.zip]

Struts 2では、

<s:doubleselect>

タグを使用して2つのHTMLドロップダウンボックスを作成します。最初のドロップダウンリストが選択されると、それに応じて2番目のドロップダウンリストが変更されます。非常に古典的な例は、 ”

country

“と ”

state

“のドロップダウン選択です。ここで、異なる ”

state

“リストは選択された ”

country

“に依存します。

<s:doubleselect label="Fruits (OGNL) "
name="fruit1" list="{'fruit','meat'}"
doubleName="fruit2"
doubleList="top == 'fruit' ? {'apple', 'orange','banana'} : {'chicken', 'pig'}"/>

その結果、次のHTMLコード…​

<tr>
<td class="tdLabel">
  <label for="resultAction__fruit1" class="label">
     Fruits (OGNL) :
  </label>
</td>
<td>
<select name="fruit1" id="resultAction__fruit1"
    onchange="resultAction__fruit1Redirect(this.options.selectedIndex)">
    <option value="fruit">fruit</option>
    <option value="meat">meat</option>
</select>
<br/>
<select name="fruit2" id="resultAction__fruit2">
</select>
<script type="text/javascript">
    var resultAction__fruit1Group = new Array(2 + 0);
    for (i = 0; i < (2 + 0); i++)
    resultAction__fruit1Group[i]= new Array();

    resultAction__fruit1Group[0][0]= new Option("apple", "apple");

    resultAction__fruit1Group[0][1]= new Option("orange", "orange");

    resultAction__fruit1Group[0][2]= new Option("banana", "banana");

    resultAction__fruit1Group[1][0]= new Option("chicken", "chicken");

    resultAction__fruit1Group[1][1]= new Option("pig", "pig");


    var resultAction__fruit1Temp = document.resultAction.resultAction__fruit2;
    resultAction__fruit1Redirect(0);
    function resultAction__fruit1Redirect(x) {
        var selected = false;
        for (m = resultAction__fruit1Temp.options.length - 1; m >= 0; m--) {
            resultAction__fruit1Temp.options[m]= null;
        }

        for (i = 0; i < resultAction__fruit1Group[x].length; i++) {
            resultAction__fruit1Temp.options[i]=
         new Option(
              resultAction__fruit1Group[x][i].text, resultAction__fruit1Group[x][i].value
             );
         }

        if ((resultAction__fruit1Temp.options.length > 0) && (! selected)) {
            resultAction__fruit1Temp.options[0].selected = true;
        }
    }
</script>
</td>
</tr>

まあ、

<s:doubleselect>

タグは本当にたくさんのコードを生成します。これは2つのドロップダウンリストを作成し、最初の選択、2番目の変更の後ろで魔法を実行するJavaScriptのコードを作成し、最初のドロップダウンボックスに「

onchange()

」ビヘイビアを追加します。

  • 複雑に見えますが、シンプルです!

    2つだけです。<s:select>

    タグは1つのタグに結合されています。

<s:doubleselect
name="" list=""
doubleName="" doubleList=""/>



name

“と ”

list

“は最初のドロップダウンリストを参照しています。 ”

doubleName

“と ”

doubleList

“は2番目のドロップダウンリストを参照しています。

データ集団は、 ”


<s:select>


“タグと同じです。

Struts 2

<s:doubleselect>


  • <s:doubleselect> ** タグの完全な完全な例は、OGNLまたはJavaリストを使用してデータをドロップダウンリストに入力する方法を示しています。

1.アクション

2つのドロップダウンリストを生成して保持するActionクラス。 +

DoubleSelectAction.java

package com.mkyong.common.action;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.opensymphony.xwork2.ActionSupport;

public class DoubleSelectAction extends ActionSupport{

    private String fruit1;
    private String fruit2;

    private String server1;
    private String server2;

    private String language1;
    private String language2;

    Map languageMap;

    public String getFruit1() {
        return fruit1;
    }

    public void setFruit1(String fruit1) {
        this.fruit1 = fruit1;
    }

    public String getFruit2() {
        return fruit2;
    }

    public void setFruit2(String fruit2) {
        this.fruit2 = fruit2;
    }

    public String getServer1() {
        return server1;
    }

    public void setServer1(String server1) {
        this.server1 = server1;
    }

    public String getServer2() {
        return server2;
    }

    public void setServer2(String server2) {
        this.server2 = server2;
    }

    public String getLanguage1() {
        return language1;
    }

    public void setLanguage1(String language1) {
        this.language1 = language1;
    }

    public String getLanguage2() {
        return language2;
    }

    public void setLanguage2(String language2) {
        this.language2 = language2;
    }

    public Map getLanguageMap() {
        return languageMap;
    }

    public void setLanguageMap(Map languageMap) {
        this.languageMap = languageMap;
    }

    public DoubleSelectAction(){
      languageMap =new HashMap();

          languageMap.put("Java",
            new ArrayList<String>(Arrays.asList("Spring", "Hibernate", "Struts 2")));
          languageMap.put(".Net", new ArrayList<String>(Arrays.asList("VB.Net", "C#")));
          languageMap.put("JavaScript", new ArrayList<String>(Arrays.asList("jQuery")));
    }

    public String execute() {
        return SUCCESS;
    }

    public String display() {
        return NONE;
    }

}

2.結果ページ



<s:doubleselect>

“タグを使用して2つのドロップダウンボックスをレンダリングし、JavaリストとOGNLリストを使用してリストを取り込みます

  • doubleselect.jsp **

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>

<body>
<h1>Struts 2 <s:doubleselect> example</h1>

<s:form action="resultAction" namespace="/">

<s:doubleselect label="Fruits (OGNL) "
name="fruit1" list="{'fruit','meat'}"
doubleName="fruit2"
doubleList="top == 'fruit' ? {'apple', 'orange','banana'} : {'chicken', 'pig'}"/>

<s:set name="serverList"
     value="#{
         'AppServer': {'Apache', 'Tomcat', 'JBoss'},
         'Database': {'Oracle', 'MySQL'}
         }"/>
<s:doubleselect label="Server (OGNL) "
name="server1" list="#serverList.keySet()"
doubleName="server2" doubleList="#serverList[top]"/>

<s:doubleselect label="Language (Java List) "
name="language1" list="languageMap.keySet()"
doubleName="language2" doubleList="languageMap.get(top)"/>

<s:submit value="submit" name="submit"/>

</s:form>

</body>
</html>
  • result.jsp **

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>

<body>
<h1>Struts 2 <s:doubleselect> example</h1>

<h2>
  Test #1 : <s:property value="fruit1"/> , <s:property value="fruit2"/>
</h2>

<h2>
  Test #2 : <s:property value="server1"/> , <s:property value="server2"/>
</h2>

<h2>
  Test #2 : <s:property value="language1"/> , <s:property value="language2"/>
</h2>

</body>
</html>

3. struts.xml

すべて一緒にリンクする〜

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

 <constant name="struts.devMode" value="true"/>

<package name="default" namespace="/" extends="struts-default">

   <action name="doubleSelectAction"
         class="com.mkyong.common.action.DoubleSelectAction" method="display">
    <result name="none">pages/doubleselect.jsp</result>
   </action>

   <action name="resultAction" class="com.mkyong.common.action.DoubleSelectAction">
    <result name="success">pages/result.jsp</result>
   </action>
  </package>

</struts>

リファレンス

ドキュメントを選択]。 link://struts2/struts-2-sselect-drop-down-box-example/[Struts 2

モバイルバージョンを終了