2

私は Spring MVC です。私のコントローラー クラスは AbstractWizardFormController クラスを拡張します。

私のコマンド オブジェクト UpdateStockBean には List.My コマンド クラスが次のように含まれています

public class UpdateStockBean {
@SuppressWarnings("rawtypes")
private List dimensionStones =
    LazyList.decorate(new ArrayList(),FactoryUtils.instantiateFactory(DimensionStoneBean.class));
String productiondate;
long openbalance;

public UpdateStockBean() {
    super();
}

@SuppressWarnings("rawtypes")
public List getDimensionStones() {
    return dimensionStones;
}
public void setDimensionStones(@SuppressWarnings("rawtypes") List dimensionStones) {
    this.dimensionStones = dimensionStones;

}
}

JSP のフィールドにデータを入力するために、フォーム バッキング オブジェクトを使用しています。以下のようになります。

protected Object formBackingObject(HttpServletRequest request)throws Exception {

            UpdateStockBean updateStockBean=new UpdateStockBean();

            updateStockBean.setDimensionStones(dimensionStoneBeans);//here dimensionStoneBeans is a list

    return updateStockBean;
    }

私の問題は私のjspにあります

 <c:forEach items="${updateStockBean.dimensionStones}" var="DimensionStones" varStatus="i" begin="0">
              <tr class="dimensionStone">    
                 <td><form:input path="dimensionStones[${i.index}].stoneNo" id="stoneNo${i.index}" cssClass="controlStock"/></td>
                 <td><form:input path="dimensionStones[${i.index}].length" id="length${i.index}" cssClass="controlStock"/></td>
                 <td><form:input path="dimensionStones[${i.index}].breadth" id="breadth${i.index}" cssClass="controlStock"/></td>
                 <td><form:input path="dimensionStones[${i.index}].height" id="height${i.index}" cssClass="controlStock"/></td>
                 <td><form:input path="dimensionStones[${i.index}].dimension" id="dimension${i.index}" cssClass="controlStock"/></td>                 
                 <td><form:checkbox path="dimensionStones[${i.index}].isIssued" id="isIssued${i.index}" cssClass="check"/></td>
                 <td><a href="#" class="removeDimensionStone"><img src="images/plus3.png" width="20" height="20" title="Remove Dimension Stone"/></a></td>
              </tr>
            </c:forEach>  
            <c:if test="${empty updateStockBean.dimensionStones}">
                <tr class="dimensionStone defaultRow">    
                            <td><input type="text" name="dimensionStones[].stoneNo" value="" Class="controlStock"/></td>
                            <td><input type="text" name="dimensionStones[].length" value="" Class="controlStock"/></td>
                            <td><input type="text" name="dimensionStones[].breadth" value="" Class="controlStock"/></td>
                            <td><input type="text" name="dimensionStones[].height" value="" Class="controlStock"/></td>
                            <td><input type="text" name="dimensionStones[].dimension" value="" Class="controlStock"/></td>                            
                            <td><input type="checkbox" name="dimensionStones[].isIssued" value="Yes" Class="controlStock"/></td> 
                            <td><a href="#" class="removeDimensionStone"><img src="images/cross1.jpg" width="20" height="20" title="Remove Dimension Stone"/></a></td>
                        </tr>
            </c:if>

${updateStockBean.dimensionStones} が空です。jsp でformBacking() メソッドによって入力されたupdateStockBeanオブジェクトを参照する方法。問題を解決してください

サーブレット conf を以下に示します

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 <property name="mappings">
    <props>
      <prop key="updateStock.nic">UpdateStockController</prop>
    <props>
 </property>
</bean>

<bean id="UpdateStockController" class="mams.web.UpdateStockController">
    <property name="commandName"><value>updateStock</value></property>
    <property name="commandClass"><value>nic.mams.web.beans.UpdateStockBean</value>
    </property>
    <property name="stockRegisterService" ref="StockRegisterService"></property>
    <property name="dimensionStoneService" ref="DimensionStoneService"></property>
    <property name="validator" ref="UpdateStockValidator"></property>
    <property name="pages">
    <list>      
          <value>addOrEditOpenDimensionStone</value> //this value corresponds to my jsp
    </list>
    </property>
    </bean>
4

1 に答える 1

0

ここでupdateStockBean.dimensionStones、 updateStockBean は、 formbackingObject() メソッドによって返されるオブジェクトの名前ではなく、コマンド名である必要があります。

<form commandname="updateStock">

<c:forEach items="${updateStock.dimensionStones}" var="DimensionStones" varStatus="i" begin="0">
              <tr class="dimensionStone">    
                 <td><form:input path="dimensionStones[${i.index}].stoneNo" id="stoneNo${i.index}" cssClass="controlStock"/></td>
                 <td><form:input path="dimensionStones[${i.index}].length" id="length${i.index}" cssClass="controlStock"/></td>
                 <td><form:input path="dimensionStones[${i.index}].breadth" id="breadth${i.index}" cssClass="controlStock"/></td>
                 <td><form:input path="dimensionStones[${i.index}].height" id="height${i.index}" cssClass="controlStock"/></td>
                 <td><form:input path="dimensionStones[${i.index}].dimension" id="dimension${i.index}" cssClass="controlStock"/></td>                 
                 <td><form:checkbox path="dimensionStones[${i.index}].isIssued" id="isIssued${i.index}" cssClass="check"/></td>
                 <td><a href="#" class="removeDimensionStone"><img src="images/plus3.png" width="20" height="20" title="Remove Dimension Stone"/></a></td>
              </tr>
            </c:forEach>  
            <c:if test="${empty updateStock.dimensionStones}">
                <tr class="dimensionStone defaultRow">    
                            <td><input type="text" name="dimensionStones[].stoneNo" value="" Class="controlStock"/></td>
                            <td><input type="text" name="dimensionStones[].length" value="" Class="controlStock"/></td>
                            <td><input type="text" name="dimensionStones[].breadth" value="" Class="controlStock"/></td>
                            <td><input type="text" name="dimensionStones[].height" value="" Class="controlStock"/></td>
                            <td><input type="text" name="dimensionStones[].dimension" value="" Class="controlStock"/></td>                            
                            <td><input type="checkbox" name="dimensionStones[].isIssued" value="Yes" Class="controlStock"/></td> 
                            <td><a href="#" class="removeDimensionStone"><img src="images/cross1.jpg" width="20" height="20" title="Remove Dimension Stone"/></a></td>
                        </tr>
            </c:if>
</form>
于 2013-03-09T05:27:11.997 に答える