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>で囲まれました。

**つまり・・・?
タグで囲まずに文字を出力したいときにつかうタグ?
ただ属性を設定すると&lt;span&gt;になっちゃうので注意!?

*1286034000*[JSF2.0]タグの共通的な属性の使い方 その2
頻繁に見かける属性の使い方を勉強していく その2です。

**escape属性
valueの値をescapeするかどうか。<とか>とかを&amp;lt;にしたり&amp;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属性に似た感じとのこと。使うことはありそう。