JSFサーバー側の検証後に、失敗したフィールドを強調表示するための要件に取り組んでいます。検証のためにjavascriptを使用することはできません。 cssスタイルの変更とサーバー側の検証をリンクする方法はありますか?JSFバリデーションを使用したCssスタイルの変更
答えて
あなたは管理Beanでこれを行うことができます:
public class ValidBean {
private UIComponent myComponent;
public UIComponent getMyComponent() {
return myComponent;
}
public void setMyComponent(UIComponent myComponent) {
this.myComponent = myComponent;
}
public String getErrorStyle() {
FacesContext context = FacesContext
.getCurrentInstance();
String clientId = myComponent.getClientId(context);
Iterator<FacesMessage> messages = context
.getMessages(clientId);
while (messages.hasNext()) {
if (messages.next().getSeverity().compareTo(
FacesMessage.SEVERITY_ERROR) >= 0) {
return "background-color: red";
}
}
return null;
}
}
Requestスコープの変数:
<managed-bean>
<managed-bean-name>validBean</managed-bean-name>
<managed-bean-class>stylevalid.ValidBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
サンプルビュー:
<f:view>
<h:form>
<h:inputText binding="#{validBean.myComponent}" styleClass="foo"
style="#{validBean.errorStyle}">
<f:validateLength minimum="6" />
</h:inputText>
<h:commandButton />
<h:messages />
</h:form>
</f:view>
コンポーネントをバッキングBeanにバインドされています。エラーメッセージがコンポーネントのキューに入れられている場合、そのCSSクラス設定はそのスタイル属性で上書きされます。
シームフレームワークは非常に簡単です。これをチェックしてください:http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/seam/Seam_Reference_Guide/JSF_form_validation_in_Seam.html
こんにちは、このメソッドはうまく見えますが、現在のプロジェクトで継ぎ目を使用していません...残念ですが、Seamコンストラクトが多くの場合に本当に助けになるからです。 – Barun
ご迷惑をおかけして申し訳ありません。 Seamは本当にJSFのキラーアプリです。しかし、私はSeamを使用しないJSFアプリケーションに取り組んでおり、ページフローを邪魔にして状態を維持しているのを見ているので、共感できます。 – Drew
ここに同じ状態...状態を維持することに関連する問題...私たちはSpring Webflowを使っています...しかし、別のトピックのためです... – Barun
- 1. CSSスタイルの変更/クラスまたはJavaScriptを使用したスタイルのアニメーション?
- 2. CSSを使用してjavafxスピナーボタンのスタイルを変更
- 3. CSSスタイルのセレクタとしてのJSFコンポーネント
- 4. Localstorage CSSスタイル変更
- 5. Get Time Javascriptを使用してスタイルを変更するCSS
- 6. ウィンドウサイズ変更時のCSSスタイルの変更
- 7. JSF dataTable rerenderがCSSスタイルを失う
- 8. 変更するCSSスタイル
- 9. 使用のCSSスタイルは、変数のアクセス
- 10. CSSを使用してwebviewをページスタイルの結果スタイルに変更しますか?
- 11. 押した後にボタンのスタイルを変更する - CSS
- 12. CSSでアンカータグのスタイルを変更する
- 13. .aspファイルのスタイルを変更する(CSS)
- 14. javascriptを使用してCSSクラス全体のスタイルを変更する
- 15. スタイル付きコンポーネントを使用してコンポーネントのCSSを変更する方法
- 16. Cssの順不同リストの変更スタイル?
- 17. モーダル後のCSSスタイルの変更
- 18. クリック後のCSS変更ボタンのスタイル
- 19. Ajax + JSONを使用して動的にエレメントCSSスタイルを変更する
- 20. JSFを使用したブラウザ依存のCSSスイッチ
- 21. jqueryでCSSスタイルを変更する
- 22. インラインフレームの変更内容CSSスタイル
- 23. PHPを使用してhtml属性またはスタイルを変更
- 24. javascriptを使ってCSSクラスのスタイルを変更するには?
- 25. AngularJSを使用して動的にCSSスタイルを更新
- 26. スタイルとCSSの使用
- 27. カスタムCSSを使用したメディアクエリのスタイルをオーバーライド
- 28. スタイルとdivを使用したCSSのコードの問題
- 29. CKEditorのCSSクラスを使用した非独占的スタイルのルール
- 30. JEditorPaneの以前に設定されたCSSスタイルの変更
こんにちは、このメソッドはよく見えるし、動作もjspに豆のCSSスタイルを注入している標準的な練習はJSFです。メンテナンスの観点からは、Javaクラスで変更が行われなければならないことが完全に明らかです。そして、別のスタイル要素を追加したい場合、それは可能ではありません。それは私のための要因ではありませんが、私はただの将来の問題を心配していました。 – Barun
もう少し良い方法は、styleClass属性を動的に決定することです。そうすれば、JavaクラスではなくCSSファイルを変更するだけで済みます。 – Drew
@Barun - あなたは正しいです。理想的なソリューションではありません。コアコンポーネントは少し基本的な傾向があります。より豊かな経験のためにコントロールライブラリへのフォークルック。代わりに、errorStyleをブール値にして、関数を介してスタイル値を解決することもできます。#{myfn:resolve(validBean.errorStyle、 'szErrStyle'、 'szOkStyle')}そうすれば、バックエンドに漏れるプレゼンテーションレイヤの詳細が少なくなります。 – McDowell