Java 如何正确使用Spring MVC<;表格:选择>;标记将特定对象字段的值显示到集合中?

Java 如何正确使用Spring MVC<;表格:选择>;标记将特定对象字段的值显示到集合中?,java,spring,jsp,spring-mvc,spring-form,Java,Spring,Jsp,Spring Mvc,Spring Form,我对Spring MVC非常陌生,我很难理解标签到底是如何工作的 所以我有以下情况 在控制器中,我有以下方法: @RequestMapping(value = "/consultazioneMinisteriale", method = RequestMethod.GET) public String consultazione(Locale locale, Model model) { List<Twb1012Regione> listaRegioni = geograf

我对Spring MVC非常陌生,我很难理解标签到底是如何工作的

所以我有以下情况

在控制器中,我有以下方法:

@RequestMapping(value = "/consultazioneMinisteriale", method = RequestMethod.GET)
public String consultazione(Locale locale, Model model) {

    List<Twb1012Regione> listaRegioni = geograficaService.getListaRegioni();

    System.out.println("Numero regioni: " + listaRegioni.size());

    model.addAttribute("listaRegioni", listaRegioni);

    return "utenteMinisteriale/consultazione";
}
其中,codReg字段以单音形式标识对象,desReg包含我希望作为值显示在标记中的值

最后,这是我的consultazione.jsp视图的代码:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page session="false"%>
<%@  taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE html>
<html>
    <head>
        <title>Home</title>
    </head>

    <body class="azure">
        <h1>Hello World</h1>

        <!--  <div> ${listaRegioni} </div> -->


        <div>
            <label>Regioni:</label>
            <form:select path="listaRegioni" items="${listaRegioni}"/>
        </div>

    </body>
</html>
为什么??怎么了?我如何解决它?

  • 标记中,您必须将bean属性的名称放入
    路径中将保留所选项目的id
  • 中:
    • items
      :包含可选项列表的bean属性
    • itemlab
      :要显示在dropbox中的描述
    • itemValue
      :要保存在



将向您显示一个包含所有区域描述(
desReg
)的dropbox,并将所选项目的
codReg
保留在bean属性
regioni

中,在控制器中添加这行代码。让我知道:

model.addAttribute("regioni",new Twb1012Regione());

如果不起作用,请告诉我

我尝试了您的解决方案,但现在我在stacktrace中获得了一条错误消息。我已经编辑了我的原始帖子,将错误放在原始帖子的末尾。你有一个包含所有区域的列表,是吗?您将如何保留所选区域?正如我在问题中所述,您必须在bean中添加一个属性
regioni
(缺少哪个代码),以保留所选区域
codReg
**不要忘记创建
private regioni
并添加
getter
setter
方法,以允许spring查看您的属性
<select>
    <option value="it.myCompany.myProject.anagrafiche.Twb1012Regione@5a259924">it.myCompany.myProject.anagrafiche.Twb1012Regione@5a259924</option>
    <option value="it.myCompany.myProject.anagrafiche.Twb1012Regione@4a87c8d3">it.myCompany.myProject.anagrafiche.Twb1012Regione@4a87c8d3</option>
    <option value="it.myCompany.myProject.anagrafiche.Twb1012Regione@815b53a">it.myCompany.myProject.anagrafiche.Twb1012Regione@815b53a</option>
    .................................................
    .................................................
    .................................................
</select>
<form:select path="regioni">
   <form:options items="${listaRegioni}" itemLabel="desReg" itemValue="codReg" />
</form:select>
12:44:52,112 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/WIFIPNSD].[jsp]] (http-localhost/127.0.0.1:8080-4) JBWEB000236: Servlet.service() for servlet jsp threw exception: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'regioni' available as request attribute
<form:select path="regioni">
    <form:options items="${listaRegioni}" itemLabel="desReg" itemValue="codReg" />
</form:select>
model.addAttribute("regioni",new Twb1012Regione());