0

我构建了一个 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;
}

有任何想法吗?

4

0 回答 0