使用JQuery的表单在Liferay中使用aui:form标签的步骤不提交任何数据

时间:2014-11-11 17:51:13

标签: javascript forms jsp liferay jquery-steps

我构建了一个portlet并添加了一个名为Idea的实体。有两个JSP,一个是视图,一个是编辑。 在视图中,只有一个按钮可以创建一个新的Idea和一个显示所有想法的表。单击按钮显示编辑jsp。

有一个包含两个字段集和输入内容的表单。 &#34;问题&#34;是我不能使用<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..
       },

    });
});

但即使我明确地声明数据,它也不会把它放在数据库中。 所以我的想法是&#34;控制器&#34;调用&#34; addIdea&#34;的类从不调用函数。 我如何解决这个问题?

这也是我的表单部分的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>

有没有办法去教授&#34; JQuery步骤<aui:***标签?我在初始化表单的时候已经尝试过但是它不能工作。要使用aui标签使其工作会很棒。因为否则Liferay门户网站不会获得数据,或者只能通过黑客攻击获得数据?

€dit:我忘记了什么,当我使用javascript submit提交表单时,它会在db中创建一个新的dataentry但其中没有实际数据。

€dit2:

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;
}

有什么想法吗?

0 个答案:

没有答案