質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSF

JSF (JavaServer Faces)とは、JavaベースのWebアプリケーションフレームワークの一つです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

1503閲覧

JSFのselectbooleancheckboxの背景色を変更したい

abogado2646

総合スコア0

JSF

JSF (JavaServer Faces)とは、JavaベースのWebアプリケーションフレームワークの一つです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/06/19 08:10

前提・実現したいこと

JSFのselectbooleancheckboxのスタイルを操作したいです。

チェックボックスのボックスの背景色を変更する機能の実装を考えていますが、そもそも背景色を変更できません。

【補足】
データベースから値を取得し、値があればチェックした状態でチェックボックスを出力させたいのでselectbooleancheckboxを使っています。
背景色を動的に変更するためだけの検討用のソースになってます。

該当のソースコード

java

1 2 3import javax.faces.bean.ManagedBean; 4import javax.faces.bean.SessionScoped; 5import javax.inject.Named; 6@Named 7@ManagedBean 8@SessionScoped 9public class IndexBean { 10 11 private String id; 12 private Boolean box; 13 14 public String doAction(){ 15 16 return null; //→現在の画面に留まる。ViewScopeの変数はそのままキープ。 17 } 18 19 public String getId() { 20 return id; 21 } 22 23 public void setId(String id) { 24 this.id = id; 25 } 26 27 28 public Boolean getBox() { 29 return box; 30 } 31 32 public void setBox(Boolean box) { 33 this.box = box; 34 } 35 36 37 38 39} 40

xhtml

1 2 3<?xml version="1.0" encoding="UTF-8"?> 4<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 5<html xmlns="http://www.w3.org/1999/xhtml" 6 xmlns:ui="http://java.sun.com/jsf/facelets" 7 xmlns:f="http://java.sun.com/jsf/core" 8 xmlns:h="http://java.sun.com/jsf/html" 9 xmlns:p="http://primefaces.org/ui"> 10 11<h:head> 12<link rel="stylesheet" href="index.css"/> 13<script src= "Index.js"></script> 14<meta charset="utf-8"/> 15 16<title>Index Page</title> 17</h:head> 18 19<h:body> 20<h2>チェックボックス</h2> 21 22<h:form> 23 24 <p:selectBooleanCheckbox id="selectckb1" value="#{indexBean.box}" /> 25 <h:outputLabel for="c1" value="チェックボックス1" /> 26 <div> 27 <p:selectBooleanCheckbox id="selectckb2" value="#{indexBean.box}" /> 28 <h:outputLabel for="c2" value="チェックボックス2" /> 29 </div> 30 31 32<h:commandButton value="画面内ボタンイベント" action="#{indexBean.doAction}" onclick="buttonClick();"/> 33 34</h:form> 35 36 37</h:body> 38</html>

javaScript

1function buttonClick(){ 2 3 4var elems = document.getElementsByClassName('ui-chkbox ui-widget ') 5 6var id = []; 7 8 9 /*idの値をとってきてid配列に格納*/ 10 for (var i = 0; i < elems.length; i++) { 11 12 13 /*idを取得できたので直接バックグラウンドを変更*/ 14 document.getElementById(elems[i].id).style.backgroundColor='#d5ecce'; 15 16 id[i] = elems[i].id; 17 } 18 /*アラートでid確認*/ 19 alert(id); 20}

試したこと

①オブジェクトはあまり変更したくないので、cssだけで検討しましたがチェックボックスをカスタマイズ
display:none →にするとチェックの操作ができなくなり断念

②JSでスタイルクラスを操作しましたがチェックボックスの後ろのラベルの色が変更となって意図しない結果になります。
※現状のソースはJSで操作しようとしたものです

③primefaceのコンポーネントの利用を検討

Style ClassApplies
.ui-chkboxコンテナのメイン要素です。
.ui-chkbox-boxチェックボックスアイコンのコンテナです。
.ui-chkbox-iconチェックボックスのアイコンに使用します。

.ui-chkbox-box :CSSでbackground-color: red;を設定すると
背景色が赤になりましたが、イベント操作で背景色を変更しようとするとチェックボックスの後ろのレベルの色が変更となって意図しない結果になります。

補足情報(FW/ツールのバージョンなど)

OS:Windows10 64ビット
Eclips:Version: 2020-12 (4.18.0)
UIコンポーネント:primeface4.0.jar
java 15.0.1 2020-10-20
Java(TM) SE Runtime Environment (build 15.0.1+9-18)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問