Home   Single Page

zscript 要素

<zscript [language="Java"]>Scripting codes</zscript><zscript src="uri" [language="Java"]/>

例えば、Javaコードといったスクリプトコードを定義します、そうしてページが処理されるときインタープリットされます。スクリプトコードの言語はデフォルトでJavaです(下を見てください) 。language属性を使用することで異なった言語を選ぶことができます。

zscript要素は上に示したように二つのフォーマットがあります。初めのフォーマットはページ中に直接スクリプトコードを埋め込みます。二つ目のフォーマットはスクリプトコードを含んでいる外部のファイルを参照します。

Attribute Name

Description

src

[Optional][Default: none]

スクリプトコードを含んでいるファイルのURIを指定します。指定されている場合、直接埋め込まれているように、スクリプトコードは読み込まれます。

src属性はブラウザとローカル依存URIをサポートしています。つまり、~と*を異なったコンテクストパス、ブラウザ、ローカル依存情報に割り当てます。より詳しくは国際化の章を参照してください

メモ:ファイルには直接インタープリットできる選択言語のソースコードが必要です。エンコードはUTF-8でなければなりません。クラスファイルを指定しないように注意しましょう。(Aka.bytecodes)

language

[Optional][Default: Java or as specified in the page directive][Allowed Values: Java | JavaScript | Ruby | Groovy]

かれているスクリプトコードの言語を指定します。

deferred

[Optional][Default: false]

初めの延期されてない言語のzscriptコードの処理が必要になるまで、この要素の処理を延期するかどうかをきめられません。以下のHow to Defer the Evalucation セクションを参照してください。

if

[Optional][Default: true]

要素を評価する条件を定義します。

unless

[Optional][Default: false]

要素を評価しない条件を定義します。

処理を遅らせる方法

ZKは初めのzscriptコードを処理する前、インタプリタを読み込みます。例えば、以下の例の中で、ユーザーがボタンをクリックするとき、Javaインタプリタは読み込まれます。

<button onClick="alert(&quot;Hi&quot;)"/>

一方で、zscript要素はページを読み込むときに評価される必要があるので、以下のZUMLページを読み込むとき、インタプリタは読み込まれます。

<window>
    <zscript>    
    void add() {    
    }    
    </zscript>    
    <button onClick="add()"/>    
</window>

インタプリタの読み込みを遅らせる場合は、deferredオプションにtrueを指定します。そうすると、ユーザーがボタンをクリックするまでは、インタプリタは読み込まれません。

<window>
    <zscript deferred="true">    
    void add() {    
    }    
    </zscript>    
    <button onClick="add()"/>    
</window>

【ヒント】: unlessとsrcと if属性中で指定されたEL表記の評価は遅らせられます。

【ヒント】: インタプリタが読み込まれるまでに、コンポーネントがページからはずれたらzscriptコードは無視されます。例えば、前の例でウィンドウがページに属していないと判断された場合、延期されたzscriptはインタープリットされません。

異なったスクリプト言語を選択する方法

一つのペー ジで複数のスクリプト言語を使うことができます。

<button onClick="javascript:do_something_in_js()"/>
<zscript language="groovy">
do_something_in_Groovy();
</zscript>

スクリプト言語が指定されていない場合、Javaが想定されます。デフォルトのスクリプト言語を変更したい場合、page属性を以下のように使用します。

<?page zscriptLanguage="Groovy"?>

<zscript>
def name = "Hello World!";
</zscript>

他のスクリプト言語を使用

ZKはJava, JavaScript,Ruby,Groovyをサポートしていますが、簡単に拡張することができます:

  1. org.zkoss.zk.script は org.zkoss.zk.scriping.Interpreterインターフェースを実装するクラスを供給します。ネーム空間を操作する場合、直接実装する代わりに、org.zkoss.zk.scripting.util.GenericInterpreterクラスから得ることができます。また、インタプリタがBSF(Bean Scipring Framwork)をサポートしている場合、org.zkoss.scripting.bsh.BSFInterpreterクラスから得ることができます。

  2. WEB-INF/zk.xml又はzk/config.xml中でスクリプト言語を宣言します。

<zscript-config>
        <language-name>SuperJava</language-name><!-- case insensitive -->        

<interpreter-class>my.MySuperJavaInterpreter</interpreter-class>

</zscript-config>

WEB-INF/zk.xmlについての詳細は開発用リファレンスを参照ください。また、zk/config.xmlについてはComponent Development Guideを参照してください。