Websharp 3 - 第二个例子:在列表框中显示数据

本例子通过Websharp在页面上动态地显示一个列表框,列表框里面包含几个人名。这里只是演示,人名从数组中得到,而实际项目开发中数据往往都是从数据库中读出来的. 这个例子会用到Websharp中的一个循环块元素(Loop Block Element)。不用担心,Websharp只有很少的几种元素,不需要花大时间去学习。

例子说明

现有人名Mike、John、Tom和Rose,希望在列表框中显示出来,如下图所示。

clip_image002

用一般的JSP实现

代码如下,在html中嵌入了jsp代码,一个循环把人名都输出来。但这样的代码很不美观,“<%”、“%>”等这些jsp标签和html代码混合在一起,显得很杂乱。如果对于更复杂的程序,可读性就更低了。

<%
String title="Name List";
String[] names={"Mike","John","Tom","Rose"};
%>
<html>
    <body>
        <H3>
            <%=title%>
        </H3>
        <select size="5">
            <%for(int i=0;i<names.length;i++)
            { %>
            <option value="<%=i %>">
                <%=names[i] %>
            </option>
            <%} %>
        </select>
    </body>
</html>

用Websharp来实现

1. 用可视化的工具Dreamweaver或者FrontPage创建一个新的HTML页面select.htm, 放到Web目录下面。在页面上添加一个下拉列表元素<select>,然后修改HTML源码,结果应该如下所示:

<html>
    <body>
        <H3>
            {%title%}
        </H3>
        <select size="5">
            <!-- begin loop:list -->
            <option value="{%index%}">
                {%name%}
            </option>
           <!-- end loop:list -->
        </select>
    </body>
</html>

说明

<select></select>元素里面出现了两个奇怪的标记:<!-- begin loop:list -->和<!-- end loop:list -->,这是Websharp中循环块元素(Loop Block Element),这两个标记总是成对出现,你可以认为它们就是一个循环,包含在标记之间的代码可以动态地重复多次。{%index%}和{%name%}就是循环块里面的模板变量,可以在每一次循环中赋予它们不同的值。

此段代码和上面的“一般jsp实现”的代码类似,但它是一个模板,不包含任何jsp标签和jsp语句,这样的代码非常的工整,可维护性特别的好。

2. 第二步需要编写程序代码来调用模板。创建select.jsp,和select.htm放在同一目录,包含如下内容:

<%@ page import="websharp.core.*,websharp.web.*,websharp.util.*"%>
<%
     Websharp websharp = new Websharp("select.htm", "", request, response);
    websharp.setValue("title","Name List");
    String[] names={"Mike","John","Tom","Rose"};
    for(int i=0;i<names.length;i++)
    {
        ValueNode list=websharp.addLoop("list");
        list.setValue("index",i);
        list.setValue("name",names[i]);
    }
    websharp.render( null);   
%>

说明:

第一行:创建WebSharp实例并引用了先前创建模板select.htm

第二行:给模板变量{%title%}赋值"Name List".

剩下几行是一个for循环,在循环体里面,每一次循环都创建一个叫“list”的ValueNode子节点,映射到模板中的list循环块,即addLoop("list")函数的参数“list”和select.htm中<!-- begin loop:list -->中的名称必须一致,表示这个ValueNode将会给list循环块赋值。 然后再对{%index%}和{%name%}这两个模板变量元素赋予不同的值。。

最后一行:render()输出执行结果。

运行结果

clip_image002[1]

此页面的源代码是:

<html>

<body>

<H1>

Name List

</H1>

<select size="5">

<option value="0">

Mike

</option>

<option value="1">

John

</option>

<option value="2">

Tom

</option>

<option value="3">

Rose

</option>

</select>

</body>

</html>

小结

从本例子中你可以了解Websharp中的Loop Block元素的使用,其本质就是把重复多次的代码用Loop Block元素表示出来,如例子中的<option></option>要多次出现,就要用Loop Block元素把它包含起来,并通过ValueNode元素对其动态地赋值。你也许觉得Websharp有点繁琐,但它的可读性非常的好,特别对于将来几百行甚至上千行的HTML文件来说,用Websharp无疑大大地减少了开发、调试的烦恼。而且,后面我们将介绍代码框架生成工具,直接根据设计的模板生成java代码框架,减少手写代码量;另外,我们也可以用到DataBind技术,大大减少代码量,这都会在后面介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值