0

すでに 2 日間私を忙しくしている問題の解決策を見つけるのを手伝ってくれることを願っています。

私がフォローしているJavaコースの一部として、劇場予約を行うためのアプリを構築しています。

ストライプ インデックス機能を使用して、ストライプ テキスト入力フィールドを使用してマップ オブジェクトを設定しようとしています。

以下のコードを参照してください。

JSP:

<c:set var="voorstellingen" value="${actionBean.theater.voorstellingen}" />
    <s:form beanclass="theater.action.TheaterActionBean" method="get">            
        <d:table name="${actionBean}">    
            <d:column title="naam">
                Naam:<s:text name="naam" title="Naam" size="30">Voer uw naam in</s:text>
            </d:column>
            <d:column title="telefoon" >    
                Telefoonnummer:<s:text name="telefoon" title="Telefoon"  size="30">Voer uw telefoonnummer in</s:text>
            </d:column>
        </d:table>
        <p></p>
        <table id="voorstelling">
            <thead>
                <tr>
                    <th>Voorstelling</th>
                    <th>Datum</th>
                    <th>Aantal vrij plaatsen</th>
                    <th>Aantal te reserveren</th>
                </tr>
            </thead>
            <tbody>
                <c:forEach items="${voorstellingen}" var="voorstelling" >
                <tr>
                    <td><c:out value="${voorstelling.naam}" /></td>  
                    <td><c:out value="${voorstelling.datum.time}" / </td>
                    <td><c:out value="${voorstelling.aantalVrij}" /></td>
                    <td><c:out value="${voorstelling.id}" /></td>
                    <td><s:text name="aantal[${voorstelling.id}]"></s:text>
                </tr>
                </c:forEach>
            </tbody>
        </table>
        <s:submit name="reserveer" value="Reserveren"/>
    </s:form>

上記のコードは、クライアントの詳細を入力できるテーブルを生成し、劇場の公演を表示するセクションと、注文するチケットの数を入力できるテキスト ボックスを生成します。"予約者" を押すと、actionBean のイベント ハンドラーに転送されます。

以下は、私の ActionBean の関連コードです

public class TheaterActionBean extends BaseActionBean {

private static final String FORMVIEW = "/WEB-INF/jsp/theater.jsp";
private String naam = null;
private String telefoon=null;
//private int aantal = 0;
private int id = 0;
private Map<Integer,Integer> aantal = null;

public String message = null;

...... 

 public Resolution reserveer() throws TheaterException{
   message = message +  "Telefoon:" + telefoon + "Naam:" + naam + "Aantalreserveren:" + aantal;
   Theater theater=getContext().getCurrentTheater();
   if (aantal != null){
        Iterator it = aantal.entrySet().iterator();
        while (it.hasNext()){
            Map.Entry paar= (Map.Entry)it.next();
            message = message + "key " + paar.getKey() + "value" + paar.getValue();
        }
   }
   return new ForwardResolution(FORMVIEW);
}

......

public void setAantal(Map<Integer,Integer> aantal){
    this.aantal = aantal;
}

次のような他のソースを読む

http://www.coderanch.com/t/555416/oa/Stripes-Nested-Indexed-Properties-Select および https://stripesframework.atlassian.net/wiki/display/STRIPES/Indexed+Properties

私は次のことを期待しています

<s:text name="aantal[${voorstelling.id}]"></s:text>

私の ActionBean で aantal という名前の Map 属性にマップしますが、ik は null 値を返し続けます。

私の目標は、マップを使用して、基礎となるモデルを使用して劇場公演ごとに個別の予約を処理することです。

これをストライプで動作させるにはどうすればよいですか?

敬具、

ヨス

4

1 に答える 1

0

コード例にはいくつかの省略記号が含まれていますが、のゲッターを実装していない可能性がありますaantal

public Map<Integer,Integer> getAantal(){
    return aantal;
}

完全にはわかりませんが、Stripes は ActionBean のインデックス付きプロパティの getter をイントロスペクトして、バインド用のジェネリック型情報を取得していると思います。

于 2016-01-25T10:09:12.377 に答える