1

fullcalendar を使用してstruts2アプリケーション内でカレンダーを作成しています。しかし...私は少し問題に直面しています。カレンダー イベント サーバー側をフィルタリングして結果リストを返すことができる高度な検索を作成しました。複数の選択を除いて、ほとんどすべてを正しく機能させることができます。これは、jqueryを間違って使用しているためだと思います。

ajaxLocationCalendar.action複数の場所を含む文字列ではなく、場所のリストが表示されることを期待しています。

私のコード内には、<select id="locationsSelect" multiple="multiple">いくつかのオプションがある があります。

私のフルカレンダーのセットアップは次のようになります。

events: {
  url: 'ajaxLocationCalendar.action',
  data: {
    'scheduleableCriteria.approvalStatus': function() {
      return $('#approvalStatusSelect').val();
    },
    'scheduleableCriteria.locations': function() {
      return $('#locationsSelect').val();
    }
  }
}

4 つの#approvalStatusSelect有効なオプションがあり、単一の選択であるため、完全に機能します。ただし、に問題があり#locationSelectます。

"null"何も選択しないと、何にも一致しないものを送信してしまいます。オプションを 1 つだけ選択すると、正しくまとめられているため、有効な結果が得られます。選択した 2 つを送信しようとすると、最終的に"Apartment,Building+3".

.val()私が今得ているものではなく、リストを送信できるようにする以外の機能はありますか?

明確化が必要な場合は、コメントに記入してください。さらに明確にするよう努めます。

4

2 に答える 2

0

以下は、 .serialize() および .seralizeArray() が正しく機能しなかったため、以下を使用することになりました。

data: function() {
  var data = {};
  data['scheduleableCriteria.approvalStatus'] = $("#approvalStatusSelect").val();
  var locations = $("#locationsSelect").val();
  if (locations) {
    $.each(locations, function(i, location) {
      data['scheduleableCriteria.locations[' + i + ']'] = location;
    });
  }
  return data;
}
于 2013-11-12T17:00:52.980 に答える
0
'scheduleableCriteria.locations': function() {
      return $('#locationsSelect').val();
    }

これは文字列のみを返します - 複数の値をカンマ区切りのリストとして表示します。したがって、アクションでは、実際には単一の文字列になります。

送信するすべてのフィールドをフォームタグに入れ、以下のようにシリアル化を使用します

var submit_data = $('form').serialize();

コードは次のように変更されます。

events: {
  url: 'ajaxLocationCalendar.action',
  data: submit_data        
}

このようにして、複数選択は文字列ではなく配列として送信されます。

解決策 2 :

カスタム関数を作成するには、選択を解析して、選択したすべての値の配列を返します

ここで完全なソリューション

于 2013-10-27T20:23:27.023 に答える