在使用中发现在很多情况下
对代码的格式化会出现问题
一直都没有解决,比较郁闷,例如,在java文件中有泛型,在xml元素中有“-”
都会出现格式化错误的问题,往往会出现不可预计的页面混乱
今天终于解决了
只要关闭了wordpress中的XHTML自动修复功能就还可以了!
在“设置”–>“撰写”–>“WordPress 自动修正无效的 XHTML 嵌套”
把这个复选框去掉,然后确定就可以了
标签: WordPress
在使用中发现在很多情况下
对代码的格式化会出现问题
一直都没有解决,比较郁闷,例如,在java文件中有泛型,在xml元素中有“-”
都会出现格式化错误的问题,往往会出现不可预计的页面混乱
今天终于解决了
只要关闭了wordpress中的XHTML自动修复功能就还可以了!
在“设置”–>“撰写”–>“WordPress 自动修正无效的 XHTML 嵌套”
把这个复选框去掉,然后确定就可以了
标签: WordPress
首先在web.xml中加入SiteMesh过滤器
<filter> <filter-name>sitemesh</filter-name> <filter-class> com.opensymphony.module.sitemesh.filter.PageFilter </filter-class> <init-param> <param-name>debug.pagewriter</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
然后,在WEB-INF目录下生成一个decorators.xml文件
<decorators defaultdir="/WEB-INF/jsp/layout"> <excludes> <pattern>/script/*</pattern> <pattern>/style/*</pattern> <pattern>/ajax/*</pattern> </excludes> <decorator name="manage" page="manage.jsp"> <pattern>/manage/*</pattern> </decorator> <decorator name="user" page="user.jsp"> <pattern>/user/*</pattern> </decorator> <decorator name="printable" page="printable.jsp" /> <decorator name="ajax" page="ajax.jsp" /> </decorators>
decorators定义了模板页的位置,也就是所在文件夹
excludes定义了不过滤的页面
其下的pattern,排除页面的规则,可以声明多个
decorator定义了装饰器
其下的pattern定义过滤规则,如不定义,就不过滤任何页面,除非在其他位置指定
name属性定义了装饰器的名字,page定义模板页的名称
最后添加sitemesh.xml文件
在这个文件里自定义使用哪个页面解析器来解析指定的内容类型或者使用哪种修饰器映射方案
<sitemesh> <property name="decorators-file" value="/WEB-INF/decorators.xml" /> <excludes file="${decorators-file}" /> <page-parsers> <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> <parser content-type="text/html;charset=ISO-8859-1" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> </page-parsers> <decorator-mappers> <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"> <param name="config" value="${decorators-file}" /> </mapper> </decorator-mappers> </sitemesh>
这里给出了一个模板,包含了最基本的SiteMesh配置。
page-parsers定义了使用的文件解析器,及其解析文件的格式和编码方式
decorator-mappers定义SiteMesh的映射方案,这里仅定义了配置文件映射方式
标签: SiteMesh
代码编辑器特性
1、Application应用程序的参数args的设置,在Build->Set Main Projects Configuration
2、程序运行快捷键F6
3、@Deprecated
4、代码自动完成Ctrl+Space,利用这个可以添加类的构造函数
5、变量统一修改Ctrl+R,取消用esc
6、给方法添加注释,Alt+Enter,这个有问题
7、Alt+Insert,可以添加类的构造函数Constructor、Getter、Setter、equals() and hashCode()、Override Method…
8、在右边编辑器文件名上点击右键,可以显示文件历史修改记录及还原,可以Unlock window
9、Alt+Enter,选择对象后,可以Introduce Variable…、Introduce Constant…生成字符串常量、Introduce Field…
10、注释 Ctrl+Shift+T,取消注释Ctrl+Shift+D,这个有问题
Ctrl+Shift+C,注释间切换
11、显示文档,Ctrl+Shift+Space
12、Ctrl+Shift+Up/Down 向上或者向下复制,Alt+Shift+Up/Down 向上或者向下移动
13、格式化文档Alt+Shift+F,移去文档中的空格在菜单Source->Remove Trailing Space
代码编辑器特性
在 NetBeans 6 中,其代码编辑器得到了显著了增强。以下是几个常用的快捷键,每个快捷键都代表其编辑器的一个特性:
NetBeans 中的项目(Project)概念非常重要。一个应用程序中所用到的源代码、资源等文件均包含在这个项目中。我们使用 NetBeans 开发程序,大部分也都建立在项目的基础上。通常开始使用 NetBeans 的第一步是新建一个新的项目。在硬盘上,每个项目以一个单独的目录形式存在。项目目录中包含src源代码子目录,build编译子目录,test测试子目 录,dist发布子目录。
基本快捷键:
以下是 NetBeans 6 的快捷键,如果您更倾向 NetBeans 5.5 或 Eclipse 的快捷键方式,可以在选项中的 Keymap 中选择。
天天使用eclipse,偶尔使用一下Netbeans,感觉快捷键还有些不太习惯!
不过可以把Netbeans的快捷键设置成eclipse,这样很大程度的方便eclipse的开发者
不错,很人性化的设置
同学要个jsp解析xml的例子,我就答应了
说句实话,好久都没有直接写过jsp了!
解析xml,也都好久没有摸过的东西了啊!
忽然拿起来还有些生疏啊!
随便写了一个,贴出代码和大家分享一下!
JSP文件
< % //建立解析工厂 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //创建解析器 DocumentBuilder db = dbf.newDocumentBuilder(); //得到解析文件 String xml = application.getRealPath("user.xml"); //开始解析xml文件 Document doc = db.parse(new File(xml)); //格式化DOM,也就是去除不必要的Text Node doc.normalize(); //得到根元素 Element root = doc.getDocumentElement(); //得到所有user元素 NodeList users = root.getElementsByTagName("user"); %> <table> <thead> <tr> <th>ID</th> <th>firstName</th> <th>lastName</th> <th>password</th> </tr> </thead> < % for (int i = 0; i < users.getLength(); i++) { Element user = (Element) users.item(i); %> <tr> <td>< %=user.getElementsByTagName("id").item(0) .getFirstChild().getNodeValue()%></td> <td>< %=user.getElementsByTagName("firstName").item(0) .getFirstChild().getNodeValue()%></td> <td>< %=user.getElementsByTagName("lastName").item(0) .getFirstChild().getNodeValue()%></td> <td>< %=user.getElementsByTagName("password").item(0) .getFirstChild().getNodeValue()%></td> < % } %> </tr> </table>
要解析的XML文件
<users> <user> <id>1</id> <firstname>Song</firstname> <lastname>Thinking</lastname> <password>songlipeng</password> </user> <user> <id>2</id> <firstname>Zheng</firstname> <lastname>Quanling</lastname> <password>zhengquanling</password> </user> </users>
对于高手,这些就没有什么必要了!不过偶尔也是会忘记的啊!温故而知新啊!^_^
标签: WordPress
<c:choose> 操作的语法
<c:choose>
<c:when test=”expression”>
body content
</c:when>
<c:when test=”expression”>
body content
</c:when>
…
<c:otherwise>
body content
</c:otherwise>
</c:choose>
每个要测试的条件都由相应的 <c:when> 标记来表示,至少要有一个 <c:when> 标记。只会处理第一个其 test 值为 true 的 <c:when> 标记体内的内容。如果没有一个 <c:when> 测试返回 true ,那么会处理 <c:otherwise> 标记的主体内容。注:尽管如此, <c:otherwise> 标记却是可选的; <c:choose> 标记至多可有一个嵌套的 <c:otherwise> 标记
标签: JSTL
<c:forEach>标签用于通用数据循环,它有以下属性
| 属 性 | 描 述 | 是否必须 | 缺省值 |
| items | 进行循环的项目 | 否 | 无 |
| begin | 开始条件 | 否 | 0 |
| end | 结束条件 | 否 | 集合中的最后一个项目 |
| step | 步长 | 否 | 1 |
| var | 代表当前项目的变量名 | 否 | 无 |
| varStatus | 显示循环状态的变量 | 否 | 无 |
vaStatus 属性
JSTL中的varStatus和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:
特性 Getter 描述current getCurrent() 当前这次迭代的(集合中的)项 index getIndex() 当前这次迭代从 0 开始的迭代索引 count getCount() 当前这次迭代从 1 开始的迭代计数 first isFirst() 用来表明当前这轮迭代是否为第一次迭代的标志 last isLast() 用来表明当前这轮迭代是否为最后一次迭代的标志 begin getBegin() begin 属性值 end getEnd() end 属性值 step getStep() step 属性值
用c:forEach 中vaStatus的属性可以获得迭代的自身状态,如:
<c:forEach var=”" items=”" varStatus=”status”>
<c:out value=”${status.current}”/> 当前对象
<c:out value=”${status.index}”/> 此次迭代的索引
<c:out value=”${status.count}”/> 已经迭代的数量
<c:out value=”${status.first}”/> 是否是第一个迭代对象
<c:out value=”${status.last}”/> 是否是最后一个迭代对象
</c:forEach>
<c:forEach>标签的items属性支持Java平台所提供的所有标准集合类型。此外,您可以使用该操作来迭代数组(包括基本类型数组)中的元素。它所支持的集合类型以及迭代的元素如下所示:
java.util.Collection:调用iterator()来获得的元素。
java.util.Map:通过java.util.Map.Entry所获得的实例。
java.util.Iterator:迭代器元素。
java.util.Enumeration:枚举元素。
Object实例数组:数组元素。
基本类型值数组:经过包装的数组元素。
用逗号定界的String:分割后的子字符串。
javax.servlet.jsp.jstl.sql.Result:SQL查询所获得的行。
标签: JSTL
<taglib>
<taglib-uri>http://java.sun.com/jstl/fn</taglib-uri>
<taglib-location>/WEB-INF/fn.tld</taglib-location>
</taglib>
长度函数: fn:length
字符串处理函数: fn:contains 、 fn:containsIgnoreCase 、 fn:endsWith 、 fn:escapeXml 、 fn:indexOf 、 fn:join 、 fn:replace 、 fn:split 、 fn:startsWith 、 fn:substring 、 fn:substringAfter 、 fn:substringBefore 、 fn:toLowerCase 、 fn:toUpperCase 、 fn:trim
JSP 页面上:
<%@ taglib uri=”/WEB-INF/fn.tld” prefix=”fn” %>
${fn:toUpperCase(”sdjkhjshjhjd”) }
这个例子将输出 这些字母的大写字母
长度函数 fn:length 的出现有重要的意义。在 JSTL1.0 中,有一个功能被忽略了,那就是对集合的长度取值。虽然 java.util.Collection 接口定义了 size 方法,但是该方法不是一个标准的 JavaBean 属性方法(没有 get,set 方法),因此,无法通过 EL 表达式“ ${collection.size} ”来轻松取得。
fn:length 函数正是为了解决这个问题而被
<%ArrayList arrayList1 = new ArrayList();
arrayList1.add(”aa”);
arrayList1.add(”bb”);
arrayList1.add(”cc”);
%>
<%request.getSession().setAttribute(”arrayList1″, arrayList1);%>
${fn:length(sessionScope.arrayList1)}
假设一个 ArrayList 类型的实例“ arrayList1 ”,并为其添加三个字符串对象,使用 fn:length 函数后就可以取得返回结果为“ 3 ”。
标签: JSTL