Java 如何从视图中传递多对多对象
我试图在表单提交中发布一组关键字。当字段为空或数据为空时,控制器接受该字段,但当我试图提交填充表单数据时,抛出错误,错误代码为“400”,表示“客户端发送的请求在语法上不正确”。 无论是在我的控制器上还是在视图中,我都很难跟踪错误 我已经包括了我的代码的控制器、模型和视图。先谢谢你 竞选班Java 如何从视图中传递多对多对象,java,hibernate,spring-mvc,thymeleaf,Java,Hibernate,Spring Mvc,Thymeleaf,我试图在表单提交中发布一组关键字。当字段为空或数据为空时,控制器接受该字段,但当我试图提交填充表单数据时,抛出错误,错误代码为“400”,表示“客户端发送的请求在语法上不正确”。 无论是在我的控制器上还是在视图中,我都很难跟踪错误 我已经包括了我的代码的控制器、模型和视图。先谢谢你 竞选班 @Entity @Table(name = "CAMPAIGN") public class Campaign implements Serializable { @Id @Column(name = "I
@Entity
@Table(name = "CAMPAIGN")
public class Campaign implements Serializable {
@Id
@Column(name = "ID")
private String campaignId;
@Column(name = "NAME", length = 50)
private String name;
@Column(name = "CLIENT_ID", length = 50)
private String clientId;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Column(name = "START_DATE")
private Date startDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Column(name = "END_DATE")
private Date endDate;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "CAMPAIGN_KEYWORDS", joinColumns = {
@JoinColumn(name = "CAMPAIGN_ID", referencedColumnName = "ID", nullable = false)},
inverseJoinColumns = {@JoinColumn(name = "KEYWORD_ID", referencedColumnName = "VALUE", nullable = false)})
private List<KeyWord> keywords;
@实体
@表(name=“活动”)
公共类活动实现可序列化{
@身份证
@列(name=“ID”)
私有字符串ID;
@列(name=“name”,长度=50)
私有字符串名称;
@列(name=“CLIENT_ID”,长度=50)
私有字符串clientId;
@日期时间格式(pattern=“yyyy-MM-dd”)
@列(name=“开始日期”)
私人日期开始日期;
@日期时间格式(pattern=“yyyy-MM-dd”)
@列(name=“结束日期”)
私人日期结束日期;
@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinTable(name=“活动\关键字”,JointColumns={
@JoinColumn(name=“CAMPAIGN\u ID”,referencedColumnName=“ID”,nullable=false)},
inverseJoinColumns={@JoinColumn(name=“KEYWORD\u ID”,referencedColumnName=“VALUE”,nullable=false)})
私有列表关键词;
关键词类
@Entity
@Table(name = "KEYWORD")
public class KeyWord implements Serializable {
@Id
@Column(name = "VALUE")
private String value;
@Column(name = "TYPE")
private String type;
@Column(name = "STATUS")
private String status;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "keywords")
private List<Campaign> Campaigns;
@实体
@表(name=“关键字”)
公共类关键字实现可序列化{
@身份证
@列(name=“VALUE”)
私有字符串值;
@列(name=“TYPE”)
私有字符串类型;
@列(name=“STATUS”)
私有字符串状态;
@ManyToMany(fetch=FetchType.LAZY,mappedBy=“keywords”)
私人名单运动;
控制器类
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public String edit(Model model, @RequestParam(value = "id", required = false, defaultValue = "0") String id) {
Campaign campaign;
if(id.equalsIgnoreCase("0"))
{
campaign = new Campaign();
}
else{
campaign = campaignDao.getCampaignById(id);
}
List<KeyWord> keyWordList = keyWordDoa.getAllKeywords();
model.addAttribute("campaign", campaign);
model.addAttribute("keyWordList", keyWordList);
return campaignURL + "edit";
}
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String save(Model model, @ModelAttribute(value = "campaign") Campaign campaign, HttpServletRequest request) {
if(campaign.getCampaignId() == null)
{
String id = GenerateID.getID();
campaign.setCampaignId(id);
campaign.setUrl(id);
}
campaignDao.addCampaign(campaign);
return "redirect:/campaign";
}
@RequestMapping(value=“/edit”,method=RequestMethod.GET)
公共字符串编辑(模型模型,@RequestParam(value=“id”,required=false,defaultValue=“0”)字符串id){
运动;
如果(id.equalsIgnoreCase(“0”))
{
活动=新活动();
}
否则{
campaign=campaignDao.getCampaignById(id);
}
List keyWordList=keyWordDoa.getAllKeywords();
model.addAttribute(“活动”,活动);
model.addAttribute(“关键字列表”,关键字列表);
返回活动URL+“编辑”;
}
@RequestMapping(value=“/edit”,method=RequestMethod.POST)
公共字符串保存(模型模型,@modeldattribute(value=“campaign”)活动,HttpServletRequest请求){
if(campaign.getcampaiid()==null)
{
字符串id=GenerateID.getID();
活动。设置活动id(id);
setUrl(id);
}
活动dao.addCampaign(活动);
返回“重定向:/campaign”;
}
胸腺视野
<form th:action="@{/campaign/edit}" method="post" th:object="${campaign}"
enctype="multipart/form-data">
<div class="form-group">
<label class="form-label">Campaign ID</label>
<div class="controls">
<input type="text" disabled="disabled" class="form-control"
th:field="*{campaignId}">
</div>
</div>
<div class="form-group">
<label class="form-label">Name</label>
<span class="help">e.g. "Red Bull"</span>
<div class="controls">
<input type="text" class="form-control" th:field="*{name}"
placeholder="Red Bull">
</div>
</div>
<div class="form-group">
<label class="form-label">User Group</label>
<span class="help">Select The User group who has access</span>
<div class="controls">
<select class="multi" style="width:100%" th:field="*{clientId}">
<option th:each="keyWord : ${keyWordList}"
th:value="${keyWord}" th:text="${keyWord.value}">Credit
card
</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label">Start Date</label>
<span class="help">"YYYY/MM/DD"</span>
<div class="controls">
<div class="input-append success date">
<input type="date" class="form-control" th:field="*{startDate}">
<span class="add-on"><span class="arrow"></span>
<i class="fa fa-th"></i></span>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label">End Date</label>
<span class="help">"YYYY/MM/DD"</span>
<div class="controls">
<div class="input-append success date">
<input type="date" class="form-control" th:field="*{endDate}">
<span class="add-on"><span class="arrow"></span>
<i class="fa fa-th"></i></span>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="form-label">Keywords</label>
<span class="help">e.g. "Energy, Drink, RedBull"</span>
<div class="controls">
<select class="multi" style="width:100%" multiple th:field="*{keywords}" th:items>
<option th:each="keyWord : ${keyWordList}"
th:value="${keyWord}" th:text="${keyWord.value}">Credit card
</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<button class="btn btn-default btn-cons" onclick="something()">Cancel
</button>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<button class="btn btn-success btn-cons" type="submit">Save</button>
</div>
</div>
</form>
活动ID
名称
e、 g.“红牛”
用户组
选择具有访问权限的用户组
信用
卡片
开始日期
“YYYY/MM/DD”
结束日期
“YYYY/MM/DD”
关键词
e、 g.“能量、饮料、红牛”
信用卡
取消
拯救