何気なく触ってみたPrimeFaces ExtensionsのSpotlightコンポーネント、何かの時に上手いこと使えないかなぁ、と触ってみたのでメモ。
Showcaseを触るほうがわかりやすいですが…(^^;
http://fractalsoft.net/primeext-showcase-mojarra/sections/spotlight/spotlightAjax.jsf
一応書きます。
ビューはこんなん
<h:body>
<h:form>
<h:panelGrid columnClasses="1">
<pe:spotlight id="spot1" blocked="#{!spotLightBean.editable}">
<p:panelGrid columns="2">
<p:selectBooleanButton value="#{spotLightBean.editable}"
offLabel="僕以外を見てあげて" onLabel="僕だけを見てよ">
<p:ajax event="change" process="spot1" update="spot1"
listener="#{spotLightBean.buttonClickAction()}"/>
</p:selectBooleanButton>
<p:inputText />
</p:panelGrid>
</pe:spotlight>
</h:panelGrid>
<p:inputText />
<p:calendar />
</h:form>
</h:body>
</html>
BackingBeanは
package hoge;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import lombok.Getter;
import lombok.Setter;
@author
@ManagedBean
@ViewScoped
public class SpotLightBean implements Serializable{
@Setter @Getter
private boolean editable;
public void buttonClickAction(){
System.out.println("イベントきてる");
}
}
スポットライト浴びるか浴びないかのフラグだけ定義しました。
メソッドはlistenerイベント来るかの確認で定義しましたが、ちゃんと呼ばれました。
ちなみにSetter/GetterはLombok使ってます。以下参照。
開発途中で出会ったLombok…
動き
初期表示
グレーの部分は触れません。
ボタン押すと
グレーのブロックが解除されて触れるようになります。
なんか特殊な業務要件があった場合とかは使えなくもない気が(^^;
上記例のように、画面表示時に指定した場所をスポットライトあてることもできるので、必ずここから入れろ、みたいな場合とか…?うーん。
まあ半分遊びです(^^;