5

struts2では、struts2に組み込まれているOGNLを利用して、Struts 2.2.1にアップグレードし<input name='bag["item"].property'> たゲッター/セッターgetBag().get("item").setProperty(value) に入力の名前を付けましたが、突然、それらは機能しなくなりました。ゲッターは呼び出されません。

インターネットは、パラメータでOGNLを使用することについて、誰も複雑なフォームを作成したことがないかのように、まったく沈黙しています。

マップパラメータを元に戻すにはどうすればよいですか?

4

1 に答える 1

3

セキュリティを強化するために、パラメータ名の制限を強化したことがわかりました。

そのため、struts.xmlに追加する必要がありました。

       <interceptor-stack name="defaultStack">
          <interceptor-ref name="params">
             <!-- For maps to work -->
             <param name="acceptParamNames">
                 [a-zA-Z0-9\.\]\[\(\)_'\s"/]+
             </param>
          </interceptor-ref>
       </interceptor-stack>

(パラメーター名に「s」と「/ s」が含まれていました)その後、ファイルのアップロードが機能しなくなりました(インターセプタースタックは狂気です)ので、明示的に追加する必要がありました。

更新:最近では、豊富なOGNLフォームの代わりにJSONを使用して複雑な構造を渡すことを強くお勧めします。もちろん、JSが必要です。

于 2010-11-09T12:15:23.097 に答える