h:outputText の使い方
をつかってみる
出力系のタグ
おそらく基本中の基本っぽい
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>outputText</title> </h:head> <h:body> <h:outputText value="#{outputTextBean.outputText}"/> </h:body> </html>
@ManagedBean public class OutputTextBean { private String outputText = "outputText"; public String getOutputText() { return outputText; } public void setOutputText(String outputText) { this.outputText = outputText; } }
実行すると、outputTextと表示されます。
↓出力結果
<html xmlns="http://www.w3.org/1999/xhtml"><head> <title>outputText</title></head><body>outputText</body> </html>
出力されたhtmlを見てみるとタグに囲まれること無くただoutputText出力されてます。
属性を設定すると・・・
タグに囲まれずに出力されましたが、h:outputTextにも属性を設定できます。
試しにid属性を設定してみると
<h:outputText value="#{outputTextBean.outputText}" id="id"/>
↓出力結果
<span id="id">outputText</span >||< <span>で囲まれました。 **つまり・・・? タグで囲まずに文字を出力したいときにつかうタグ? ただ属性を設定すると<span>になっちゃうので注意!? *1286034000*[JSF2.0]タグの共通的な属性の使い方 その2 頻繁に見かける属性の使い方を勉強していく その2です。 **escape属性 valueの値をescapeするかどうか。<とか>とかを&lt;にしたり&gt;にしたり その他いろいろescapeするかどうかをbooleanで設定。 デフォルトはfalse。trueにするとescapeしてくれます。 >|xhtml| <h:outputLabel value="#{outputLabelBean.outputLabel}" escape="true" />
on○○属性
たとえばonblur属性とかonclick属性とかのこと。
指定する値はjavasriptとかにすれば良いとおもいます。
<h:outputLabel value="#{outputLabelBean.outputLabel}" onclick="alert('onclick')" />
もしかしたらすごい使い方があるかもしれませんが今のところは
これしか分かりません。
style属性
cssを指定する属性。
<h:outputLabel value="#{outputLabelBean.outputLabel}" style="color: #ff0000;" />
こんな感じ。今回は文字色を赤にするのを書いてみました。
htmlのstyle属性と一緒です。
styleClass属性
これはclass属性を設定できるようです。
<h:outputLabel value="#{outputLabelBean.outputLabel}" styleClass="styleClass" />
↓出力結果
<label class="styleClass">output</label>
binding属性
どうやらHTMLを置き換えたいときに使うような気がします。
いろいろ調べてみたけど分からなかったので実験してみました。
<h:outputLabel value="#{outputLabelBean.outputLabel}" binding="#{outputLabelBean.htmlOutputLabel}" />
@ManagedBean public class OutputLabelBean { private String outputLabel = "output"; private HtmlOutputLabel htmlOutputLabel; public OutputLabelBean(){ this.htmlOutputLabel = new HtmlOutputLabel(); this.htmlOutputLabel.setValue("binding"); } public String getOutputLabel() { return outputLabel; } public void setOutputLabel(String outputLabel) { this.outputLabel = outputLabel; } public HtmlOutputLabel getHtmlOutputLabel() { return htmlOutputLabel; } public void setHtmlOutputLabel(HtmlOutputLabel htmlOutputLabel) { this.htmlOutputLabel = htmlOutputLabel; } }
this.htmlOutputLabel.setValue("binding");
ここで"binding"とセットしたのでhtmlには"binding"と出力されました。
元々設定していた"output"と言う文字は出力されませんでした。
ただ、this.htmlOutputLabel.setValue("binding");をコメントアウトしたら"output"と出力されました。
って事はbindingはhtmlを置き換えたいときつかうのかなぁと。
ただ、HtmlOutputLabelクラスをbindingできたけど、HtmlInputTextクラスでためしたら何も表示されなくなったので
同じスーパークラスをもってるのを設定してあげないとダメなのかなぁと。
まぁいろいろ試していこうと。。。
lang属性とtitle属性
documentには
lang属性
Code describing the language used in the generated markup for this component.
title属性
Advisory title information about markup elements generated for this component.
markupって書いてあったので一緒にまとめてみました。
<h:outputLabel value="#{outputLabelBean.outputLabel}" lang="ja" title="title" />
↓出力結果
<label xml:lang="ja" title="title">output</label>
lang属性はxhtml書くときはじめの方で指定しておけばよいような気がするのであんまり使わなそう。
title属性はとかに使うalt属性に似た感じとのこと。使うことはありそう。