2011-01-11 3 views
3

いくつかの値が設定された単純なhtml selectタグを作成したいとしますここに私のコントローラは、次のとおりです。ここで私のインデックス部でスプリングmvc選択ボタン

@Controller 
public class HomeController { 

    @RequestMapping("/test") 

    public String home(){ 
     return "index"; 
    } 

    @ModelAttribute("items") 
    public ArrayList<String> getList(){ 
     ArrayList<String> itemList = new ArrayList<String>(); 
     itemList.add("one"); 
     itemList.add("two"); 
     itemList.add("three"); 
     return itemList; 
    } 

} 

は、関連するHTMLコードは次のとおりです。

<div class="form-row"> 
    <label for="items">Items:</label> 
    <span class="input"><form:select path="items" items="${items}" itemLabel="name" /></span> 
</div> 

これは、生成し(これはHTMLにレンダリングされる):

<div class="form-row"> 

    <label for="items">Items:</label> 

    <span class="input"><form:select path="items" items="[one, two, three]" itemLabel="name" /></span> 

</div> 

そしてIこのようなことを考えていました(私が期待したもの):

<div class="form-row"> 

     <label for="items">Items:</label> 

     <span class="input"><select name="name"> 
     <option>one</option> 
     <option>two</option> 
     <option>three</option> 
     </select></span> 

    </div> 

arrayListの各項目の前に<option></option>を追加してgetList()メソッドを変更することができました。これを行うプレティアの方法があると確信しています。ここで私が求めているのは、私は春のMVCを学び始めました。それは、この例外の原因となった

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 

後:

が、私はこのskaffman提案に応じて編集し、追加この:あなた

QUESTIONのUPDATE感謝

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/index.jsp at line 39 

36:  Date of birth: <input type="text" size="10" /> 
37:  <div class="form-row"> 
38: <label for="items">Items:</label> 
39: <span class="input"><form:select path="items" items="${items}" itemLabel="name" /></span> 
40: </div> 
41: </fieldset> 
42: 


Stacktrace: 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:498) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:195) 
    org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:159) 
    org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141) 
    org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90) 
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:417) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
root cause 

org.springframework.beans.NotReadablePropertyException: Invalid property 'name' of bean class [java.lang.String]: Bean property 'name' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter? 
    org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:702) 
    org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:694) 
    org.springframework.web.servlet.tags.form.OptionWriter.doRenderFromCollection(OptionWriter.java:210) 
    org.springframework.web.servlet.tags.form.OptionWriter.renderFromCollection(OptionWriter.java:180) 
    org.springframework.web.servlet.tags.form.OptionWriter.writeOptions(OptionWriter.java:133) 
    org.springframework.web.servlet.tags.form.SelectTag.writeTagContent(SelectTag.java:216) 
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) 
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 
    org.apache.jsp.WEB_002dINF.views.index_jsp._jspx_meth_form_005fselect_005f0(index_jsp.java:206) 
    org.apache.jsp.WEB_002dINF.views.index_jsp._jspService(index_jsp.java:109) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:195) 
    org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:159) 
    org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141) 
    org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90) 
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:417) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 

答えて

4

これはあなたのエラーです:

Invalid property 'name' of bean class [java.lang.String]: Bean property 'name' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

あなたが<option>ラベルを生成するときに、リスト内の各アイテムのnameプロパティを使用するタグを指示しましたので、あなたがこれを取得しています。しかし、リストはnameというプロパティを持たないStringsで構成されています。

ただ、すなわち、タグからのことを削除し、あなたは大丈夫です。:

<form:select path="items" items="${items}" /> 
+1

優れた、それが動作するには、あなたに感謝します – London