<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
      xmlns:grv="http://myfaces.apache.org/groovy"
      xmlns:g="http://java.sun.com/jsf/composite/greet"

        >
<head>
    <title>Hello World</title>
</head>
<body>
<ui:composition template="/template.xhtml">

    <ui:define name="body">
        <h1>
            <ui:insert name="title">Ext-Scripting General Example
            </ui:insert>
        </h1>


        <h:panelGroup styleClass="stdBoxBig" style="color:black;">
            <h2>Hello to Apache MyFaces Extension Scripting</h2>

            <p>This is a testpage which tests the various aspects of the dynamic reloading of Apache MyFaces Extension Scripting.
            </p>

            <p>The sources for this example can be found under:<b>WEB-INF/ ...</b></p>
        </h:panelGroup>

        <h:form id="form">
            <h:panelGroup styleClass="left">
                <h:panelGroup styleClass="stdBox">
                    <h:messages/>

                    <h3>Validator Test 1</h3>

                    <g:greet2 who="hello world from composite"/>

                    <h:outputText id="output1" value="Please enter your name"/>
                    <h:outputText value="#{javatestbean4.hello}"/>
                    <h:inputText id="input1" value="#{helloWorld.name}" required="true">
                        <grv:groovyvalidator/>
                    </h:inputText>

                    <h:commandButton id="button1" value="press me" action="#{helloWorld.send}"/>
                </h:panelGroup>
                <h:panelGroup styleClass="stdBox">
                    <h3>Groovy Component</h3>
                    <grv:testcomponent/>
                    <h:message id="message1" for="input1"/>
                </h:panelGroup>
            </h:panelGroup>
            <h:panelGroup styleClass="right">
                <h:panelGroup styleClass="stdBox">
                    <h3>Bean Tests</h3>
                    <h:outputFormat value="#{testbean.xxx}"/>
                    <br/>
                    <h:outputFormat escape="false" value="#{javatestbean.sayHello}"/>
                </h:panelGroup>

                <h:panelGroup styleClass="stdBox">
                    <h3>Converter Test 1</h3>
                    please insert "hello world" into the input field
                    <h:inputText value="#{testbean.xxx}">
                        <grv:testConverter1/>
                        <grv:testValidator1/>
                    </h:inputText>
                </h:panelGroup>
                <h:panelGroup styleClass="stdBox">
                    <h3>Action Test 1</h3>
                    <h:commandButton value="Press me dynamic" action="#{testbean.doit}"/>
                </h:panelGroup>
                <h:panelGroup styleClass="stdBox">
                    <h3>Java Component</h3>
                    <grv:testcomponent2 testAttr="testAttributeValue" testAttr2="testAttribute2Value"/>
                </h:panelGroup>
            </h:panelGroup>

        </h:form>
    </ui:define>
</ui:composition>
</body>
</html>
