1

プレゼンテーション層に Strust2 を使用しています。Java オブジェクト (アプリケーション) リストにバインドするドロップダウン付きのストラット フォームがあります。ドロップダウンはアプリケーション オブジェクトのリストを表示し、ユーザーはアプリケーションを 1 つ選択して送信できます。Action クラスでユーザー入力値を取得する場合、値の型は「文字列」を受け取ります。Struts ドロップダウンから直接オブジェクトを取得することはできませんか?私の場合「アプリケーション」オブジェクト

   private List<Application> applicaionList = new ArrayList<Application>();
   @Autowired
   private ApplicationService applicationService;
   private Application application;

   public void loadTheForm(){
       applicationList = applicationService.findAll();
   }

   public void submitForm(){
       Document doc = new Document();
       doc.setApplication(application);

   }
   //Getter Setters...

}

アプリケーション.jsp

<s:form action ="submitForm">
    <s:select list ="applicationList" headerValue="---Select---" headerKey="-1" name="application"/>
</s:form>

struts.xml

   <action name="submitForm" class="com.ActionSupport" method="submitForm">
            <result name="success" type="tiles">/newAdminDocumentRequired.tiles</result>
   </action>

ユーザーがドロップダウンから値を選択して送信すると、送信された値は文字列です。選択した値のオブジェクトを取得する方法がない場合、Struts でオブジェクトを直接取得できませんか?

ありがとう、うでしか

4

2 に答える 2

2

あなたの質問から私が得たのは、

 1. You have to show list of applications as drop-down.
 2. User selects one application and submit the form.
 3. You have to retrieve the selected application and perform some action with it.

Application クラスには、すべてのアプリケーションに固有のプロパティ「id」があると思います。そして、ユーザーに表示する必要がある applicationName。だから今、私はこの問題を次のように解決したでしょう

  <s:form action ="submitForm">
        <s:select list ="applicationList" headerValue="---Select---" headerKey="-1" key="application" listKey="id" listValue="applicationName"/>
    </s:form>

さて、このタグは次のようなドロップダウンを作成します

<select name="application">
    <option value="-1" selected="selected">---Select---</option>
    <option value="1">Demo 1 App</option>
    <option value="2">Demo 2 App</option>
    <option value="3">Demo 3 App</option>
    <option value="4">Demo 4 App</option> 
   </select>

OPTION 要素の値 (1、2、3、4) は application.id であり、タイトル (デモ 1 アプリ、デモ ​​2 アプリなど) は application.applicationName であることに注意してください。

ここで、ユーザーが選択して送信します。選択したアプリケーションの ID は、パラメータ「application」の struts アクションに送信されます。アクションでは、これを行うことができます

public MyClass extends ActionSupport{

   private List<Application> applicaionList = new ArrayList<Application>();
   @Autowired
   private ApplicationService applicationService;
   private **String** application;

   public void loadTheForm(){
       applicationList = applicationService.findAll();
   }

   public void submitForm(){
       Application varApp = applicationService.findApplicationById(getApplication());
       Document doc = new Document();
       doc.setApplication(varApp);

   }
   //Getter Setters...

}

アプリケーションのタイプを String に変更したことに注意してください。はい、ドロップダウンから直接オブジェクトを渡すことはできないと思います。

それが役に立てば幸い。

于 2012-11-12T06:08:16.200 に答える