ポートレットを作成し、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;
}
何か案は?