今天使用struts2的标签做页面布局的时候发现使用了table后,每一个td都占了一行:为了演示,我把table的部分设置了1px的边框:
这不是我希望的效果,我希望这个提示信息和文本框在一行显示,上网搜罗了一下,找到了原因,分享给大家。
Struts2标签默认是含有样式的,即默认的样式中就是换行的。
如我们把struts2标签直接放在table里面,布局是变样子的,即默认会加了换行:
test.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div id="div22">
<s:form action="register" method="post" id="form1">
<s:i18n name="ApplicationResources">
<table align="left" style="border: 1px solid red; >
<tr height="20px;">
<td width="100px;">用户名</td>
<td width="100px;"><s:textfield name="register.username" id="username"></s:textfield>
</td>
<td width="500px;"> <font color="red"><s:text name="usernamePrompt"></s:text></font></td>
</td>
</tr>
</table>
</s:i18n>
</s:form>
</div>
</body>
</html>
页面默认是加上了换行,每一个td都占了一行:
这就是由于struts2标签默认是含有样式的原因,两个样式放在一起,自然就变了。
查看struts.properties或$ {struts-core-2.06.jar}/org/apache/struts2/default.properties文件,其中有如下配置:
<!--[if !supportLineBreakNewLine]-->
struts.ui.theme=xhtml struts.ui.templateDir=template struts.ui.templateSuffix=ftl
这一段就是关于struts2模版的配置信息。
<!--[endif]-->
我们可以把struts2标签中自带的样式去掉,然后自己进行样式设置。
配置样式可以在struts.properties文件中进行配置以下三行配置代码即可:
struts.properties:
struts.ui.theme=simple struts.ui.templateDir=template struts.ui.templateSuffix=ftl
然后在运行代码,发现使用的就是我希望的布局了。
<!--EndFragment-->
struts.properties文件中全部内容:
<!--EndFragment-->
<!-- 配置国际化文件基本名和编码 --> struts.custom.i18n.resources=messages struts.i18n.encoding=UTF-8 <!-- 配置上传文件的临时存放地址 --> struts.multipart.saveDir =/tmp <!-- 去掉struts标签自带的样式 --> struts.ui.theme=simple struts.ui.templateDir=template struts.ui.templateSuffix=ftl
如果没有struts.properties文件,可以修改struts.xml文件,在其中加入如下行
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
<constant name="struts.ui.theme" value="simple" /> <constant name="struts.ui.templateDir" value="template" /> <constant name="struts.ui.templateSuffix" value="ftl" />
struts.ui.theme=simple可以解决struts2标签自动换行问题,即不再自动被添加进table标签中。
使用struts.properties文件,可以使用struts.xml进行配置:
struts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="facePot" extends="struts-default"> <action name="dispatcher" class="DispatcherAction"> <result name="goRegister">/WEB-INF/register/register.jsp</result> <result name="input">/index.jsp</result> </action> <constant name="struts.ui.theme" value="simple" /> <constant name="struts.ui.templateDir" value="template" /> <constant name="struts.ui.templateSuffix" value="ftl" /> </struts>
感谢参考文章:
http://hi.baidu.com/8_8_8_8_8_8/item/50c4b72ef36526c0ef10f16f