【问题标题】:How to get data from two classes that are many-to-many, in the same edit form?如何在同一个编辑表单中从多对多的两个类中获取数据?
【发布时间】:2013-05-31 15:12:09
【问题描述】:

我正在处理两个具有多对多关系的类。我在两个表中都插入数据,关系通常是在JoinTable中注册的。我的问题是,如何以相同的形式显示两个表中的数据?

这是我的控制器:

@Controller
public class RecipeController {

@Autowired
private ReceitaService receitaService;  

 @RequestMapping(value = "/novaReceita.do", method = RequestMethod.POST)
public String createRecipes(@ModelAttribute("Receita") Receita receita, BindingResult resultReceita, 
                            @ModelAttribute("Tag") Tag tag, BindingResult resultTag, @RequestParam String action, Map<String, Object> map) {


    receita.getTag().add(tag);    
    receitaService.addReceita(receita);

    map.put("receita", receita);

    map.put("receitaList", receitaService.getAllReceita());

    return "listRecipes";

}

这是我遇到问题的地方,因为我只能显示单个表的数据。

  public String editForm(@PathVariable("id") int id, ModelMap map) {

    map.addAttribute("receita", receitaService.getReceita(id));

    return "updateRecipes";
}   

最后,JSP页面显示输入的数据:

<c:url var="url" value="/receita/${receita.id}"/>   
<form:form action="${url}" method="GET" commandName="receita">
            <table width=80% > 
                <tr>
                    <td><strong>ID </strong></td>
                    <td><form:input path="id" disabled="true" class="input-small"/></td>                         
                </tr>
                <tr>
                    <td><strong>Title </strong></td>
                    <td><form:input path="titulo" class="input-xlarge"/></td>
                </tr>
                <tr>
                    <td valign=top><strong>Desc probl</strong></td>
                    <td><form:textarea path="desc_prob" class="input-xlarge" rows="3" /></td>
                </tr>
                <tr>
                    <td valign=top><strong>Desc soluc</strong></td>
                    <td><form:textarea path="desc_soluc" class="input-xlarge" rows="6" /></td>
                </tr>                    
                <tr>
                    <td><strong>Tag</strong></td>
                    <td> <form:input path="tag" disabled="true" class="input-small"/></td>
                </tr>
            </table>    
        </form:form>

能够显示两个表中的数据缺少什么? 谢谢。

【问题讨论】:

    标签: spring hibernate jsp controller many-to-many


    【解决方案1】:

    对于单列/属性,您可以使用&lt;form:input/&gt;
    对于多对一,您可以使用&lt;form:select/&gt;
    对于一对多,您可以使用&lt;form:select multiple='true'&gt;
    在您的情况下,您必须首先为关系的一侧选择一个ID,即receita,然后显示该receita 中的所有标签,所以我认为此时它算作一对多。所以在你的情况下,尝试使用这个标签:
    &lt;form:select path="tag" multiple="true"/&gt;

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      相关资源
      最近更新 更多