2

ModelDrivenフォーム送信にStruts2を使用しています。

Dojo のタグを使用datetimepickerし、そのタグから日付を選択すると、オブジェクトに入力されたフォーム値でフォームが正しく送信されModelDrivenます。

ただしdatepicker、jQuery のタグがフォームで取得され、日付が選択されている場合、オブジェクトのModelDriven値は null になります。

日付が選択されておらず、フォームが送信された場合、正常に機能します。

問題を解決するために見逃した設定はありますか?

JQuery の次のjarを含めました

JQuery:

<sx:datepicker name="startDate" id="startDate" label="" cssStyle="width:275px; " 
minDate="0" displayFormat="dd/mm/y" changeMonth="true" changeYear="true" 
readonly="true" value="%{startDate}"/>
4

4 に答える 4

1

削除するreadonly="true"と、すべて正常に動作します。

readonly属性のデフォルトfalseは、入力が読み取り専用かどうかを示します。

于 2013-01-03T21:04:59.670 に答える
0

問題は、DojoがJSPの日付値をJavaのDateとして受け取るのに対し、JQueryはそれを文字列として受け取ることでした。

そのため、strutsはJQueryを探していましたが、JQuerysetDate(String)を探していませんでした。setDate(Date)

于 2013-01-03T21:31:05.203 に答える
0

私はかなり確信しています

name="startDate"

に変更する必要があります

name="yourmodel.startDate"

より良いヘルプのためにもっと多くのコードを表示してください...

于 2013-01-03T20:31:39.517 に答える
0

Struts は、値がRFC3 339 (yyyy-MM-dd'T'HH:mm:ss)に準拠するロケールに依存しない値としてサーバーに送信されることを期待します。これは、デフォルトの dojo タグ (現在は非推奨) が提供するものです: http ://struts.apache.org/2.0.12/docs/datetimepicker.html

送信するだけです: 2013-01-03 残りはオプションです。

jQuery Datepicker は mm/dd/yy を使用します。このフォーマットを struts2 が期待するものに変更するには、プレゼンテーションに使用される defaultFormat を変更するか、送信時に入力されたものを提示されたフォーマットに変更する altFormat を設定します (したがって、「mm/dd/yy」が好きな場合は、altFormat を「yyyy-」に設定できます。 mm-dd" を実行して、目的の効果を得る)。

http://jqueryui.com/datepicker/#date-formats

http://api.jqueryui.com/datepicker/

ご覧のとおり、jQuery はこれを簡単に提供しますが、タグを使用してそれを行う方法は...わかりません。他の誰かがこの情報を取得して、可能であればタグ固有の手法を使用して、別の回答で拡張することを歓迎します。

于 2013-01-03T21:03:53.357 に答える