简单,但是让我疑惑,且烦恼。求助大家解决.(有兴趣的来看看)
poyer 2003-08-14 04:38:03
程序目的: 将TextArea中的内容转换Html显示
页面说明:
Page1:Page1中的textArea没有设置自动换行(wrap)
Page2:Page2中的textArea设置有自动换行(wrap="hard")
StringUtils 用来转换成Html的类
源码及说明:
Page1源码
名称为Page1.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<body>
<form name="form1" action="Page2.jsp" method="post">
<textarea name="testText" cols="60" rows="6"></textarea>
<input type=submit value=提交>
</form>
</body>
</html>
Page2源码
名称为Page2.jsp
/*
目的,用一个隐藏的TextArea(有自动换行)来获得TextArea的换行字符,进行分行。
使得页面显示与TextArea完全一样,主要处理用户在TextArea中输入不敲回车的英文字符或数字字符(中文自己会加回车)
*/
<html>
<%@ page language="java" import="wrap.StringUtils" contentType="text/html; charset=GBK" %>
<%
request.setCharacterEncoding("GB2312");
String testText = request.getParameter("testText");
String action = "";
if (request.getParameter("action") != null)
action = request.getParameter("action");
%>
<body>
<form name="form2" action="Page2.jsp" method="post">
<input type="hidden" name="action" value="<%=action%>">
<%
if (action.equals("submit"))
{
//转换成HTML,显示在页面上
testText = (new StringUtils()).escapeHTMLTags(testText);
out.print(testText);
}
else
{
%>
<!-DIV用来隐藏TextArea,问题就出在这儿 ->
<div name="div1" style="display:none">
<textarea name="testText" cols="60" rows="6" wrap="hard"><%=testText1%></textarea>
</div>
<%
}
%>
</form>
</body>
</html>
<script lanuage=javascript>
//收到Page1的提交后,生成Page2页面,并自动提交Page2,显示HTML
if (form2.action.value == "")
{
form2.action.value="submit";
document.form2.submit();
}
</script>
现象说明:
<div name="div1" style="display:none">中由于加了 style="display:none"
导致页面中的TextArea值在提交的时候被赋为空("",不是null);
如果去除style="display:none"则显示如程序所希望。
如果在<div name="div1" style="display:none">中加入的是Text控件,提交时获得正常的值。
初步判断:是用于text,checkbox(和Text一样,正常)的value值的处理方式与TextArea不同.
疑问:为什么会出现这种现象?如何实现我说希望的效果。将一个没有自动回车的TextArea按一样的格式(主要是换行位置)显示为Html?