0

ポートレットを作成し、Idea という名前のエンティティを追加しました。ビュー用と編集用の 2 つの JSP があります。ビューには、新しいアイデアを作成するためのボタンと、すべてのアイデアを表示するテーブルしかありません。ボタンをクリックすると、編集 JSP が表示されます。

2 つのフィールドセットと入力内容を含むフォームがあります。「問題」は<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>

<aui:***タグをJQueryステップに「教える」方法はありますか? フォームの初期化中にすでに試しましたが、機能しません。aui タグを使用して機能させると、すばらしいでしょう。そうしないと、Liferay ポータルがデータを取得できないか、ハッキングでしか取得できないからですよね?

€dit: 私が忘れていたのは、javascript submit を使用してフォームを送信すると、データベースに新しいデータエントリが作成されますが、実際のデータは作成されません。

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

何か案は?

4

0 に答える 0