2012-01-20 18 views
0

我在春天處理一個表單,它抱怨表單中只有一個變量(它以前工作,不知道爲什麼它停止工作,沒有Java代碼的變化Spring 3抱怨只有一個變量形式

public class Store { 

    private String implementation; 

    private String name; 

    private int replication; 
    private String view; 

    private List<String> remote; 
    private List<String> clusters; 

    private String cluster; 
    private String type; 

    // getters and setters 
} 

我的控制器:

@RequestMapping(value="/aaaaa", method=RequestMethod.GET) 
public ModelAndView showForm() { 
    ModelAndView model = new ModelAndView(); 
    model.addObject("implementations", implData); 
    model.addObject("store", new Store()); 
    model.setViewName("nameOfView"); 
    return model; 
} 

@RequestMapping(value = "/aaaaa", method = RequestMethod.POST) 
public ModelAndView processAddition(@ModelAttribute("store") Store store) { 
    // some processing 
} 

我的JSP形式:

我我的對象之前和之後是工作)

<form:form id="form" name="form" method="post" modelAttribute="store" action="/zzzzz"> 
    <fieldset> 
     <div class="input select"> 
     <label for="implementation" >Implementation<span class="small">Choose implementation</span></label> 
     <form:select name="implementation" path="implementation"> 
      <form:option value="">Choose Implementation</form:option> 
      <c:forEach items="${implementations.keySet()}" var="impl"> 
         <form:option value="${impl}"><c:out value="${impl}" /></form:option> 
      </c:forEach> 
     </form:select> 
    </div> 
    <div class="input select"> 
     <form:select id="cluster" name="cluster" path="cluster"> 
       <form:option value="">Choose Cluster</form:option> 
     <c:forEach items="${implementations.get('aaaa').getClusters().keySet()}" var="cl">        
        <form:option value="${cl}"><c:out value="${cl}" /></form:option> 
       </c:forEach> 
      </form:select> 
      <form:select id="type" name="type" path="type"> 
     <form:option value="">Cluster Type</form:option> 
     <form:option value="new">New</form:option> 
     <form:option value="old">Old</form:option> 
     </form:select> 
     <div style="display: none;" id="remote"> 
      <label>Remote Sites <span class="small">Available Remote Sites</span></label> 
       <form:checkbox path="remote" id="remote" name="remote" value="" /> 
      <div id="append"> 
     **I am appending the "form:checkbox for remote dynamically here using javascript and for spring not to complain I added a empty checkbox on top, still it complains**        
      </div> 
      </div> 
      <input style="margin-left: 150px; width: 125px; height: 30px;" class="button" type="submit" value="Add" /> 
    <div class="spacer"></div> 
    </div> 
    </div> 
    </fieldset> 
</form:form> 

堆棧跟蹤:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'remote' available as request attribute 
    org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147) 
    org.springframework.web.servlet.tags.form.AbstractCheckedElementTag.autogenerateId(AbstractCheckedElementTag.java:78) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138) 
    org.springframework.web.servlet.tags.form.AbstractSingleCheckedElementTag.writeTagContent(AbstractSingleCheckedElementTag.java:82) 
    org.springframework.web.servlet.tags.form.CheckboxTag.writeTagContent(CheckboxTag.java:52) 
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) 
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 

任何幫助嗎?

謝謝

+0

這只是一個嘗試的提示(因爲我觀察到一次verz stange行爲) - 用列表替換列表。 – Ralph

+0

我剛剛嘗試過,沒有運氣 – tazo

+0

如果問題仍然存在,請「捕獲」提交值的HTTP請求,並將其添加到問題中。 – Ralph

回答

0

您的請求/模型中沒有「遠程」對象。您需要添加它,但複選框的列表也不起作用。

+0

我確實有「列表遠程」在我的商店模型 – tazo

+0

我不知道爲什麼所有的變量都不抱怨,它只是我的模型中的一個變量,這很奇怪。 – tazo

+0

爲什麼沒有複選框列表工作? – tazo