import groovy.xml.MarkupBuilder
import groovy.sql.Sql
import java.util.*
![]()
def ShowAllItems(builder,sql)
...{
sql.eachRow(
"select * from TTST_ITEM",
...{
itemToXML(builder,it)
}
);
}
![]()
def showItem(builder,sql,codeItem)
...{
if(codeItem)
...{
item =
sql.firstRow("select * from TTST_ITEM where ITE_CODE = ?"
,[codeItem])
if(item)
...{
builder.ITEM_QUERY(Type:'Selected')...{
itemToXML(builder,item)
}
}
}
}
![]()
def itemToXML(builder, item)
...{
builder.ITEM( Code:item.ite_code,
Name:item.ite_name,
Description:item.ite_description
)
}
![]()
def show(param)
...{
def bundle = ResourceBundle.getBundle("webapp");
def sql = Sql.newInstance("jdbc:hsqldb:"
+ bundle.getString("db.location")
+ "/Test;shutdown=true;ifexists=true"
, "sa","", "org.hsqldb.jdbcDriver")
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
def groovy = xml.ITEM_QUERY(Type:'All')...{
ShowAllItems(xml,sql)
}
showItem(xml,sql,param.p_ite_code)
// Not efficient but it's just to prevent
// HSQLDB to block on the DB files
// when the servlet context is restarted
sql.execute("SHUTDOWN")
return writer.toString()
}
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE WADSET SYSTEM "http://www.uib.es/leaf/LEAFwad.dtd">
<WADSET>
<WAD
NAME="Test"
INIT_MODE="INITS_ON_START_UP"
XML_ALLOW_SHOW="TRUE"
XSLT_NO_CACHE="TRUE"
>
<OPERATIONSET>
<SUFFIX VALUE="fm"/>
<XMLOPERATION
NAME="showItems"
DESCRIPTION="Shows all the items and the selected one"
CLASSNAME="org.leaf.XMLOperation"
>
<SOURCES
GLOBAL_TAG="XML_APP"
>
<SOURCE XML_SOURCE="xml/Labels.xml"/>
<SOURCE XML_SOURCE="script://scr/Item.groovy/show?w_"/>
</SOURCES>
</XMLOPERATION>
</OPERATIONSET>
</WAD>
</WADSET>
![]()
我们还需要加一些标签,以备后面的view使用。我们通过向Test\WEB-INF\xml\Labels.xml中加以下内容达到这个目的:
![]()
<LABELS
Title="Test application"
>
<ITEM
Title="Item Management"
FieldSetLegend="Item data"
SelectDefault="... select an item to display its data"
Code="Code"
Name="Name"
Description="Description"
/>
</LABELS>
<?xml version="1.0"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<!--
Autoconfiguration servlet
-->
<servlet>
<servlet-name>AutoConfigurer</servlet-name>
<servlet-class>org.leaf.util.AutoConfigurer</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>FILE_NAME.1</param-name>
<param-value>WEB-INF/classes/webapp.properties</param-value>
</init-param>
<init-param>
<param-name>NODES_NAME.1</param-name>
<param-value>db.location</param-value>
</init-param>
<init-param>
<param-name>PATTERN.1</param-name>
<param-value>(.*)/WEB-INF/(.*)</param-value>
</init-param>
<init-param>
<param-name>FORMAT.1</param-name>
<param-value>{0}WEB-INF/{1}</param-value>
</init-param>
</servlet>
<!-- End Autoconfiguration servlet -->
<!--
WebLEAF controller servlet configuration
-->
<servlet>
<servlet-name>WebLEAFController</servlet-name>
<servlet-class>org.leaf.LEAFManager</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- End controller servlet -->
<servlet-mapping>
<servlet-name>WebLEAFController</servlet-name>
<url-pattern>*.fm</url-pattern>
</servlet-mapping>
</web-app>

| 第1页: 进行准备工作 | 第2页: 建立数据库 |
| 第3页: 使用Groovy实现商业逻辑 |