【发布时间】:2015-03-07 11:31:54
【问题描述】:
我正在用Struts 实现Tag System。我在数据库中有两个表,Blog 和 Tag 使用具有多对多关系的 Hibernate。我已经整合了JQuery tagEditor。当我插入单个值时没关系,但是当我插入多个值(标签)时,它就像在数据库中插入单个值一样。
我没有使用 javascript 的经验。如何分隔文本字段中的值并将此值发送到服务器端以插入数据库?
create.jsp:
<s:form action="execCreate">
<div class="form-group">
<s:label for="title" key="global.title" />
<s:textfield cssClass="form-control" key="blog.title"
name="blog.title" id="title" />
</div>
<div>
<s:textarea id="wysihtml5-editor" cssStyle="height:400px" name="blog.description"
key="blog.description" placeholder="Enter Description..."/>
</div>
<div class="taginput">
<s:label for="tag" value="Tag"/>
<s:textfield cssClass="form-control" key="tag.name" cssStyle="height:50px;"
name="tag.name" id="tag" />
</div>
<s:submit type="button" cssClass="btn btn-primary" key="global.submit"/>
</s:form>
<script>
$('#tag').tagEditor({
autocomplete: {
delay: 0, // show suggestions immediately
clickDelete:true,
position: { collision: 'flip' }, // automatic menu position up/down
placeholder: 'Enter tags ...',
source: function(request, response) {
$.ajax({
url : 'blog/listTag.html',
type : "POST",
data : {
term : request.term
},
dataType : "json",
success : function(jsonResponse) {
response(jsonResponse.tagList);
}
});
},
},
});
</script>
BlogAction.java:
public String execCreate() {
try {
facade.createBlog(blog,tag);
return "success";
} catch (Exception e) {
logger.error(
Logger.EVENT_FAILURE,
"could not insert blog values, error: *"
+ e.getMessage() + "*");
}
return "input";
}
BlogService.java:
@Transactional(readOnly = false)
@Override
public void createBlog(Blog blog,Tag tags) {
Blog newBlog = new Blog();
User user = (User) ESAPI.authenticator().getCurrentUser();
Tag tag=new Tag();
String name[]=tags.getName();
for(int i=0; i<name.length; i++){
tag.setName(tags.getName());
tag.setDate(new Date());
em.persist(tag);
em.flush();
}
try {
Set<Tag> listTag = blog.getTag();
listTag.add(tag);
newBlog.setTag(listTag);
newBlog.setTitle(blog.getTitle());
newBlog.setDescription(blog.getDescription());
newBlog.setCreated(new Date());
newBlog.setUser(user);
em.merge(newBlog);
em.flush();
} catch (Exception e) {
logger.error(Logger.EVENT_FAILURE, e.getMessage());
}
logger.info(Logger.SECURITY_SUCCESS, "blog created successfully");
}
我编辑了我的问题,并且 BLOB 值出现在我的数据库中。
【问题讨论】:
-
你有一个具体的问题,你有什么错误?
-
修改如何将值发送到操作或在操作中解析它们。
-
@RomanC ,我处于这种情况:博客和标签表之间存在多对多关系。当我插入博客属性(标题、描述、标签)时,我想发送单独的标签值到服务器,因为一个博客可能有很多标签。我想我应该从客户端与 javscript 分开并将这些单独的值发送到服务器,但我不清楚。我的“错误”是当标签插入数据库时它正在插入作为一个字符串,而不是单独的值。
-
@AleksandrM,你能帮我写代码吗?
-
用代码做什么?拆分字符串?
标签: jquery hibernate jsp struts2 jquery-tageditor