简单,但是让我疑惑,且烦恼。求助大家解决.(有兴趣的来看看)

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?
...全文
28 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
poyer 2003-08-22
  • 打赏
  • 举报
回复
经过测试
withwind(柳随风)的下面的方法
<textarea name="testText" cols="60" rows="6" wrap="hard" style="visibility:hidden"><%=testText%></textarea>
是正确可行的。

但是我还是有一个疑问,就是为什么用div来隐藏就不可以呢?
明天揭帖。
poyer 2003-08-22
  • 打赏
  • 举报
回复
to 楼上的,首先很感谢你的解答:

但是我在测试的时候是通不过的,第二次得到的testText是"";
我想问一下,你有没有把<div style="display:none"></div>加到textArea上,也就是第二次提交的是隐藏的textArea的值。

to EveryOne
StringUtils是我自己写的类,如果大家要测试的话,可以去除StringUtils.
可以把testText = (new StringUtils()).escapeHTMLTags(testText); 屏蔽
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我的测试都是没有使用上面这句话的,所以楼上几位的推测都不准确。

谢谢诶,希望还有达人解答。
wellsoon 2003-08-18
  • 打赏
  • 举报
回复

1.不太明白为什么要这样实现,基本看不明白代码:(

2.我去掉import="wrap.StringUtils",

testText = (new StringUtils()).escapeHTMLTags(testText);
改成:testText = new String(testText);

<%=testText1%> 改成: <%=testText%>

然后程序执行正常:

执行后page2.jsp源文件如下:

<html>



<body>
<form name="form2" action="page2.jsp" method="post">
<input type="hidden" name="action" value="submit">
121232323
413443234
1
41231234
14344


</form>
</body>
</html>
<script lanuage=javascript>
//收到Page1的提交后,生成Page2页面,并自动提交Page2,显示HTML
if (form2.action.value == "")
{
form2.action.value="submit";
document.form2.submit();
}
</script>


请检查你的

StringUtils()).escapeHTMLTags(testText);

问题很可能出在这里。
yaray 2003-08-18
  • 打赏
  • 举报
回复
<div name="div1"></div>
<input type="text" name="inputText" value="">

设置div1的值为:div1.innerHTML="abcd"
设置inputText的值为:inputText.value="abce"

是不是这种差异呢??
zcjl 2003-08-18
  • 打赏
  • 举报
回复
poyer(瑞德):
to 楼上的,testText1是我的笔误。

----------------
:)
你敢扫一扫吗 2003-08-18
  • 打赏
  • 举报
回复
<textarea name="testText" cols="60" rows="6" wrap="hard"><%=testText1%></textarea> 这里的<%=testText1%>中的testText1没有定义
zcjl 2003-08-18
  • 打赏
  • 举报
回复
问题竟然还没解决吗?
可惜我是菜鸟,现在又要上班
只好帮你up了
gboy2003 2003-08-18
  • 打赏
  • 举报
回复
up!
lymkelly 2003-08-17
  • 打赏
  • 举报
回复
本来想路过看一下的

wrap.StringUtils;这个地方出错了
找不到这个类


不好意思,只好帮忙up了
xqi8 2003-08-17
  • 打赏
  • 举报
回复
up
poyer 2003-08-17
  • 打赏
  • 举报
回复
to 楼上的,testText1是我的笔误。
至于testText = (new StringUtils()).escapeHTMLTags(testText)我在后面的测试中也没有使用,但是结果一样。

不过你的后一种方案我没有试过,谢谢,我试试先
withwind 2003-08-16
  • 打赏
  • 举报
回复
我这里一切正常。(tomcat4.0.6+w2k sp2+ie6)
访问http://hua:8080/hbsq/page1.jsp,转入page2.jsp,显示page1中textarea中的内容。
是不是就要这个效果?

只不过没有换行,可能是因为把testText=(new StringUtils()).escapeHTMLTags(testText); 注释掉的原因吧,我没有这个包。

另外可以这样写:
<textarea name="testText" cols="60" rows="6" wrap="hard" style="visibility:hidden"><%=testText%></textarea>
(原文中为<%=testText1%>,应该不对,不会是这个原因吧,jsp不报错?)



poyer 2003-08-16
  • 打赏
  • 举报
回复
还是不行,接收到的参数值为null
yoken 2003-08-15
  • 打赏
  • 举报
回复
不太清楚你的用意,不知道把textarea放在一个width和height都为0的iframe里行不行
poyer 2003-08-15
  • 打赏
  • 举报
回复
呵呵,大家也都是第一次看到这个问题吗?
我也觉得很奇怪,所以放出来和大家探讨探讨。

希望有高手可以帮忙解答。谢谢
jiangheng 2003-08-15
  • 打赏
  • 举报
回复
挺纳闷,继续测试!
zcjl 2003-08-15
  • 打赏
  • 举报
回复
测试了一下,跟你说的一样
我也不知道解决办法了
poyer 2003-08-15
  • 打赏
  • 举报
回复
希望大家都能来关注一下,不能帮忙也不要紧,可以避免再次同样的问题。
poyer 2003-08-15
  • 打赏
  • 举报
回复
楼上的,谢谢,我先试试。
至于用意我想我已经说的行清楚了的,麻烦你再仔细看看。呵呵。
谢谢。
lymkelly 2003-08-14
  • 打赏
  • 举报
回复
关注

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧