2

フィードバックパネルにカスタムHTMLを追加する方法はありますか?

<span>のように、追加されたメッセージごとにFeedbackPanelが作成する要素を追加するだけでなく、aと。<li>を追加したいと思います。<div><button><span>

だから私はvalidationErrorFeedback.error(message);メッセージが私のHTMLになる場所のようなものを探しています。これは可能ですか?

4

2 に答える 2

4

サブクラスFeedbackPanel化して、独自のマークアップを提供できます。必要に応じてマークアップをコピーFeedbackPanel.htmlして編集するだけです(ただし、コンポーネント階層は同じである必要があります)。

于 2012-10-30T20:59:14.673 に答える
3

最も見やすい方法は、電話することです

feedbackPanel#setEscapeModelStrings(false)

ただし、これを行うと、入力を表示するバリデーターがある場合、アプリケーションはクロスサイトスクリプティング攻撃に対して脆弱になります。たとえば、EmailAddressValidatorを使用するテキストフィールドがあり、ユーザーが「Joe」と入力した場合、バリデーターのエラーメッセージは次のように表示されます。

'${input}' is not a valid email address.

'Joe'を返すものは有効なメールアドレスではありません。<script>alert('xss')</script>ただし、攻撃者は、たとえば、エスケープされなくなったパスを渡すことで、XSSペイロードを非常に簡単に注入できます。

どのバリデーターもこの入力をエコーバックしないことを保証できる場合は、先に進んでそれを使用してください。それ以外の場合は、Leiter氏が提案するように実行し、FeedbackPanelを独自のマークアップでサブクラス化する必要があります。wicket 1.5.xでは、これは次のようになります。

<html xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
  <ul wicket:id="feedbackul" class="feedbackPanel">
    <li wicket:id="messages" class="errorlevel">
      <span wicket:id="message" class="errorlevel">A message</span>
    </li>
  </ul>
</wicket:panel>
</body>
</html>
于 2012-10-30T21:28:19.490 に答える