Monthly Archives: 11月 2005

JSTL,几近晕倒的几个小问题

一、版本问题,web.xml文件使用的DTD版本如果为2.3则对应JSTL的1.0版,2.4则对应1.1版。如果发现报错说JSTL标签里的表达式没有接收到任何值的时候,估计是版本出的错。到Google查下,很多解决方法。 二、List的c out。如果你的实体继承了List,而添加了一些属性,想要在页面直接输出这些属性,你可能这样做: <c:out value=”${mylist.myproperty}”/>但是你会发现这是个错误: javax.servlet.ServletException: The “.” operator was supplied with an index value of type “java.lang.String” to be applied to a List or array, but that value cannot be converted to an integer. 原因是这样的,当表达式的实体是一个List或者数组数型的话,”.”操作符后面跟的属性一律被看作是List或数组的下标了。JSTL试图把它们转成整型,失败就会报错。 不但Out标签存在这个特点,其他也一样。所以在设计实体的时候,如果需要用到List的功能,最好加一个List的成员变量。不需要直接继承。

Posted in 技术 | Tagged , , | Leave a comment

让WebWork遍历Map

用Webwork的标签遍历,是一件很爽的事情。例如遍历一个List。你可以做得比之前任何一套标签更优雅和简单。当遇到Map的时候,可能你会束手无策。因为我也刚好有这样的经历。 如果知道Map里面的Key,使用Key去得到Value那不难做,只需要在遍历的标签里面写上<ww:property value=”yourMap['key']“/>即可。但是要把Map里面所有的无素都遍历出来,我查了好多网页都没有答案。最后查了下Webwork in action,发现只有一句话提到Map的遍历,但这句话足以让我找到答案了。原文是: When iterating over a Map, it iterates over the Set returned by Map.entrySet(), which is a set of Map.Entry objects, which in turn has the methods getKey() and getValue() to retrieve the associated key/value pairs. … Continue reading

Posted in 技术 | Tagged , , | 1 Comment

Html2Js--Html代码到Javascript文件的转换

之前在网上有一些现成的转换工具的,不过有些是Javascript,只限于Web环境下使用,有些是本地程序,但是没有编码的选项,只是单纯的提供输入及输出,工作的时候需要处理些特殊编码的文件的时候就没法子了。没办法,只有自已写一个转换工具,满足自已的需要。因为时间关系,暂时写了一个在控制台下运行的程序,谁有兴趣,帮忙做个界面出来也不错。呵,下面是所有代码。可惜,我机子上没用Java2Html的插件,要不代码就没这么难看了。。。不过将就下了。 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Reader; import java.nio.charset.Charset; public class Html2Js { private String source; private String dist; private String encoding; public static String html2js(String html) { StringBuffer sb … Continue reading

Posted in 技术 | Tagged , | Leave a comment

关于Web路径的备忘

在处理Web页上一大堆连接的时候,常常被一些相对路径搞得很迷糊,现在整理一下,当作是提醒备忘。其实,很简单,只是老是不记住。呵 通常我们遇到的相对路径会有下面三种情况,下面一一来举例说明。 一、以”/”为首字母的路径,其完整路径将会是主机名加上该路径名 <a href=”/article/index.html”>article</a>实际指向:http://hostname/article/index.html 二、无斜杠开头的路径,其完整路径将会是当前的URL的上一级路径加上该路径名 <a href=”article/index.html”>article</a>,如果当前你访问的页面地址为http://hostname/book/list.html 则,这个连接将去到http://hostname/book/article/index.html 三、以一到N个.加斜杠开头的路径,其实整路径将会是当前的URL的上一级至N级路径加上该路径名,第二种情况是这种情况的特殊例子 <a href=”./article/index.html”>article</a>,如果当前你访问的页面地址为http://hostname/book/list.html 则,这个连接将去到http://hostname/book/article/index.html <a href=”../article/index.html”>article</a>,如果当前你访问的页面地址为http://hostname/book/list.html 则,这个连接将去到http://hostname/article/index.html

Posted in 技术 | Tagged , , | Leave a comment

异常使用准则

使用Java异常首先要搞清受查异常及不受查异常的区别,概念不清楚会把你一个头搞得两个大。:)下面是一些在实践中自已总结出来的一点使用异常的准则,未必每个人都如此,但我自觉还是比较适当的做法。 一、认真考虑底层函数签名里的异常,我们是否能够处理,如果经处理后可以令工作继续正常进行,则使用Catch块处理。 二、如果认为无法处理,使你的工作无法进行,并且你确定,你的函数的使用者也会因为这个异常而无法继续工作那抛出一个RuntimeException吧。让该线程停止。说明这可能是个Bug,你需要修改程序或底层需要修改。 三、需要注意的是,如果你的函数被更上一层调用,而调用者不希望因为出错一次而使整个线程当掉,则你要小心地把该异常封装一下,声明到你的函数签名中。让调用者来处理这个异常。 准则不多,需要多写,多调试才能更好的理解。

Posted in 技术 | Tagged , | Leave a comment