我构建了一个 portlet 并添加了一个名为 Idea 的实体。有两种JSP,一种是视图,一种是编辑。在视图中,只有一个用于创建新创意的按钮和一个显示所有创意的表格。单击按钮显示编辑 jsp。
有一个包含两个字段集和输入内容的表单。“问题”是我不能使用这些<aui:form ...
东西,因为它不适用于 JQuery 步骤(或者更好的是,我无法让它工作)。所以我使用的是普通标签,而且 JQuery 步骤也提供了提交按钮,它只是一个<a href="#finish" ...>
. 这样就不会带来要提交的表单和数据库中的数据。因此,我尝试在 jquery 步骤定义的 javascript 代码中执行此操作,如下所示:
$(document).ready(function(){
var form = $("#wizard").show();
form.steps(
{
headerTag : "h3",
bodyTag : "fieldset",
transitionEffect : "slideLeft",
onFinishing: function (event, currentIndex) {
alert("Submitted!");
var data = jQuery("#wizard").serialize();
alert(data);
jQuery("#wizard").submit();
form.submit();[/b]
},
onFinished: function (event, currentIndex) {
//I tried also here..
},
});
});
但即使我明确声明数据,它也不会将其放入数据库中。所以我的想法是永远不会调用调用“addIdea”函数的“控制器”类。我如何解决问题?
这也是我的表单部分的jsp代码:
<aui:form id="wizard" class="wizard" action="<%= editIdeaURL %>" method="POST" name="fm">
<h3>Idea</h3>
<aui:fieldset>
<aui:input name="redirect" type="hidden" value="<%= redirect %>" />
<aui:input name="ideaId" type="hidden" value='<%= idea == null ? "" : idea.getIdeaId() %>'/>
<aui:input name="ideaName" />
</aui:fieldset>
<h3>Idea desc</h3>
<aui:fieldset>
<aui:input name="ideaDescription" />
</aui:fieldset>
<aui:button-row>
<aui:button type="submit" />
<aui:button onClick="<%= viewIdeaURL %>" type="cancel" />
</aui:button-row>
</aui:form>
有没有办法“教”JQuery Steps<aui:***
标签?我在初始化表单时已经尝试过了,但它不起作用。使用 aui 标签让它工作会很棒。因为否则 Liferay 门户将无法获取数据,或者只能通过 hack 获取数据,对吗?
€dit:我忘记了,当我使用 javascript submit 提交表单时,它会在数据库中创建一个新的数据条目,但其中没有实际数据。
欧元 2:
editIdeaURL 在此处的表单中被引用了一点:
<portlet:actionURL name='<%=idea == null ? "addIdea" : "updateIdea"%>'
var="editIdeaURL" windowState="normal" />
addIdea 代码如下所示:
首先在 IdeaCreation 类中:
public void addIdea(ActionRequest request, ActionResponse response)
throws Exception {
_updateIdea(request);
sendRedirect(request, response);
}
在哪里_updateIdea()
:
private Idea _updateIdea(ActionRequest request)
throws PortalException, SystemException {
long ideaId = (ParamUtil.getLong(request, "ideaId"));
String ideaName = (ParamUtil.getString(request, "ideaName"));
String ideaDescription = (ParamUtil.getString(request, "ideaDescription"));
ServiceContext serviceContext = ServiceContextFactory.getInstance(
Idea.class.getName(), request);
Idea idea = null;
if (ideaId <= 0) {
idea = IdeaLocalServiceUtil.addIdea(
serviceContext.getUserId(),
serviceContext.getScopeGroupId(), ideaName, ideaDescription,
serviceContext);
} else {
idea = IdeaLocalServiceUtil.getIdea(ideaId);
idea = IdeaLocalServiceUtil.updateIdea(
serviceContext.getUserId(), ideaId, ideaName, ideaDescription,
serviceContext);
}
return idea;
}
最后使用IdeaLocalServiceImpl
:
public Idea addIdea(
long userId, long groupId, String ideaName, String ideaDescription,
ServiceContext serviceContext)
throws PortalException, SystemException {
User user = userPersistence.findByPrimaryKey(userId);
Date now = new Date();
long ideaId =
counterLocalService.increment(Idea.class.getName());
Idea idea = ideaPersistence.create(ideaId);
idea.setIdeaName(ideaName);
idea.setIdeaDescription(ideaDescription);
idea.setGroupId(groupId);
idea.setCompanyId(user.getCompanyId());
idea.setUserId(user.getUserId());
idea.setCreateDate(serviceContext.getCreateDate(now));
idea.setModifiedDate(serviceContext.getModifiedDate(now));
super.addIdea(idea);
return idea;
}
有任何想法吗?