在Struts开发过程中遇到的几个问题?谢谢! 关注!对于第二个问题,你可以将所有的文本框都命名成一个名字,那么在actionForm中就可以用一个数组来取值了,至于怎么实现动态网页,嘿嘿,我也遇到了同样的问题,但是还没有解决掉 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1。可能你的路径不对所以不行。2。同意楼上。另外循环可以用<logic:iterate/>来作。3。只要一个struts-config.xml中定义如 <action path="/A".... > <forward name="success" path="/xxx.do"/> </action> 那么调用A.do成功时,会调用xxx.do。4。Struts和其他形式的WebApplication应该可以进行互通,如同一个project中既用到了tiles框架,和struts框架,他们之间可以资源共享5。可以把action中的form ,cast成你要的ActionForm,或new一个这样的ActionForm,在这个form中调用你要的属性的set方法,那么传到jsp中,jsp中会显示你设的相应的值。 请问:问题1我试过很多不同的路径了,还是不行问题2能不能给出详细的例子问题5我new了一个新的ActionForm,并进行了适当的赋值,但是当转移到另一个JSP中并没有显示出我赋的值 问题2: 例子可以上网找找,csdn上就有一些。问题5:你的那个jsp中的属性值要包含在form中,form的名字可以在struts-config中定义,也可以在jsp中定义,但是new的新的ActionForm的类型一定要和struts-config.xml中定义的匹配。 为什么非要用ActionForm呢?对于一个IT人来说,在软件开发的过程中遇到一些难点或不能解决的技术问题,很想找同行的人聊聊。平时,也想跟同行的人交流交流,但奈何现在QQ、MSN上的网友搜索功能不全面,提供的搜索项太少,导致搜索结果太多,往往很难找到一位与你兴趣相同、从事同领域的网友。51lookfor(我要找、网友搜索器)是针对QQ、MSN查找网友的不足而开发的。搞这个的起因是我想在QQ或MSN中搜索搞IT,而且是搞移动通讯方面的IT人聊天,但实在是很难找到。因此,自已就搞了一个,它能对网友提供的资料进行全文搜索,完全是为了方便网友,特别是像我们这些IT人,需要跟其他人交流的IT人。现在,只在IT界进行推广使用,欢迎各位使用,且留下你的个人资料,特别是你现在所从事的领域。请记得网址:http://www.51lookfor.com 。51lookfor是IT人交流的桥梁,你也来注册吧?应用举例,想找从事java的IT人,请搜索:it java或java。 问题1:我尝试了多种方法可是不行呀!?我用的方法是<html:link href><html:link>和javascript,主要是链接的路径。唯一链接成功的路径是Action.do但是他的转向是Action的input路径,没有进入Action中。问题5:做法和你描述的应当是一样的。首先建立一个FormBean,自动在struts-config中声明,同时在Jsp中的<html:form name="FormBean名字" type="FormBean的路径" action="">然后在form中的Field中这样写道<html:text property="password"/>当然property的名字是在FormBean中声明的变量。结果不行呀。但是我用一个formbean对应多个jsp就没有问题了。ps:我用的是JBuilder 如果你是新new的一个formbean(这是在form = null时才这样,一般都是cast成你要的ActionForm)那么你一定要request.setAttribute("xxxxx",formbean);"xxxxx"和你struts-config.xml中定义的一样。 第2个问题看看这个:http://expert.csdn.net/Expert/topic/2782/2782363.xml?temp=3.162783E-02 感谢sagittarius1979(射手爱狮子)!问题3、4、5已经解决问题4中在同一个project中的不同结构的webapplication可以进行资源的共享。主要还是问题1没有解决!在一个JSP中要实现转向多个Action怎么实现呢?另一个问题,如何将JSP表单中的属性绑定到FormBean中声明的变量?:如下面的代码,<html:form name="allForm" type="untitled1.AllForm" action="/test1Action"><html:text property="username"/><html:submit>提交</html:submit></html:form>当提交后可以在test1Action中得到username的值但是在这个JSP中却得不到allForm(FormBean)中的username的值如果JSP中的<html:text property="username"/>改写为<html:text name="allForm" property="username"/>就可以得到穿过来的值了。那么在JSP中将各种表单对象绑定到FormBean中不同的变量,应当怎样写呢?如果每一个表单对象都需要写出name="FormBean",会比较累。在开始的Form中声明怎么就不行呢?naomaomao(孬毛毛) 那个看不太懂呀! 我哪个跟(落叶无痕)说的一样,就是定义一个数组的属性在formbean中,jsp页面上的那些自动生成的表单元素,都用这一个名字,付值跟取值的时候就操作数组,那么数组里面各元素的值就是你表单上那些元素的值,顺序一样 <logic:iterate name="<%=Constants.FORUM_CLASS_LIST%>" id="classlist" type="com.beans.forumbeans.ForumClassBean" scope="request" ><%String orderValue = classlist.getForumClassNo();%><html:text property="order" size="2" maxlength="2" value="<%=orderValue%>"/></logic:iterate> naomaomao(孬毛毛) 能把你写的东西解释一下吗?谢谢! 循环体Constants.FORUM_CLASS_LIST是arrylist,里面存的是bean的数组,每次循环取出一个bean的对象,把这个对象里的属性值都拿出来做显示。<html:text property="order" size="2" maxlength="2" value="<%=orderValue%>"/>就是这个页面要动态显示的一个text元素,他的vlaue是从上面哪个循环体通过classlist.getForumClassNo();取出来的~~这样做你就会看到页面上有多个text元素,他们的名字都一样,但是value的值不同~~ “但是在这个JSP中却得不到allForm(FormBean)中的username的值”是指javascript中得不到 "document.allForm.username.value = ??"的值吗?应该不会吧。 哦,这几天挺糊涂的~~~回复又写错地方了~~不好意思~~:)刚才是谢: sagittarius1979(射手爱狮子) 回复我另外一篇文章的~~~~sorry~~~~~~~~~~ 多谢两位的帮助!能否先帮我解决一下问题1呀?另有就是我在struts结构中的JSP页面输入中文,但是当我在debug的时候下面监视显示的却是乱码,但是在显示出来又回复成中文了,如何让整个过程都不是乱码呢?GBK和GB2312我都试过了。 关于第2个问题,是这个样子的:formbean中定义了:String[] Value;和起相关的get和set方法在jsp中,我想利用如下的结构,给value赋值和显示value的值:<html:logic > <html:text></html:logic>naomaomao(孬毛毛) 你的程序是还在Action中做了操作吗?我觉得我的没有必要做任何操作,能够显示和赋值就可以了。 “<html:link href="/action">按钮</html:link>“刚才给你试了一下:<html:link href="./action.do">按钮</html:link> 可以成功。<html:link page="/action.do">按钮</html:link> 可以成功。关键还是连接路径的问题。 <html:link href="/action.do">这种形式确实可以实现转移但是转移到了action的input路径中的JSP页面,并没有进入accion中,进行操作。如果input中没有给出jsp的页面路径,服务器就会报错。 楼主你的<html:link href="./action.do">按钮</html:link> 中“按钮”是固定文字,还是<input type="button" name="按钮" value="xxx"> ? <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"><taglib><tlibversion>1.0</tlibversion><jspversion>1.1</jspversion><shortname>lc</shortname><uri>http://jakarta.apache.org/struts/tags-lc-1.0.0</uri><tag><name>loop</name><tagclass>untitled1.LoopTimeTag</tagclass><bodycontent>JSP</bodycontent><attribute><name>formbean</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>这是我写的一个非常简单的taglib,为什么一编译就报错呢?我是完全按照JBuilder中其它的tld写的!错误如下:"index4.jsp": org.apache.jasper.JasperException: XML parsing error on file /WEB-INF/lc.tld: (line 1, col -1): 缺少文件根组件。 啊!大家先帮我解决一下 问题1 吧。我试了很多方法了。<html:link href="/action.do">按钮</html:link>但是转移到了action的input路径中的JSP页面,并没有进入accion中,进行操作。如果input中没有给出jsp的页面路径,服务器就会报错。 好的,问题1代码如下:<html:form action="/test1Action"><html:text name="allForm" property="username"/><br><html:text name="allForm" property="password"/><br><html:submit>开始</html:submit><br><html:link href="test2Action.do">test</html:link></html:form>点击“开始”就转到了上面定义的test1Action,没有问题但是,点击“test”就无法转移到test2Action中,而是转移到test2Action中Input的jsp界面。 问题1我解决啦!把action的validate设置为false就可以了!关于前面提到的中文乱码问题也解决了。在formbean中set的时候总是将jsp中的中文存储为乱码,所以我加入了一个如下的函数:public String getStr(String str) { if (str != null) { try { String temp_p = str; byte[] temp_t = temp_p.getBytes("ISO8859-1"); String temp = new String(temp_t); return temp; } catch (UnsupportedEncodingException e) {} } return null; }就可以了,当然还想请教为什么会出现乱码,和其它的解决方法!(ps:GBK和GB2312我都试了,解决不了)另一个问题:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"><taglib><tlibversion>1.0</tlibversion><jspversion>1.1</jspversion><shortname>lc</shortname><uri>http://jakarta.apache.org/struts/tags-lc-1.0.0</uri><tag><name>loop</name><tagclass>untitled1.LoopTimeTag</tagclass><bodycontent>JSP</bodycontent><attribute><name>formbean</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>这是我写的一个非常简单的taglib,为什么一编译就报错呢?我是完全按照JBuilder中其它的tld写的!错误如下:"index4.jsp": org.apache.jasper.JasperException: XML parsing error on file /WEB-INF/lc.tld: (line 1, col -1): 缺少文件根组件。 sagittarius1979(射手爱狮子) 好厉害呀 org.apache.jasper.JasperException: XML parsing error on file /WEB-INF/lc.tld: (line 1, col -1)在解析xml时出错,看看你的tld中文件开始的地方(line 1, col -1)有没有非法的字符如全角的空格。 有需要Struts资料的请到网站 http://softtrade.vicp.net 我已经可以实现循环了!(自己写的taglib)结构如下<fb:loop formbean="<%=AllForm%>">循环体</fb:loop>formbean是一个固定ActionForm对象:AllForm.java循环次数是对象AllForm中的一个成员loop。但是,如果写成<fb:loop formbean="AllForm">则报错,因为JBuilder把AllForm当作了String型的数据,无法转换为AllForm型的实际上我想和JBuilder里面已有的标签一样,如:<html:text name="formbean" property="...">那么他就可以自动编译,得到相应的formbean,还可以自动转换类型。如果像我写的那样则还要在JSP中写出得到AllForm的语句:<jsp:useBean id="allForm" class="untitled1.AllForm" scope="request"/>如何实现像<html:text>的功能呢?我的想法是想实现一种循环,标签形式如下:<fb:loop formbean="ActionForm" property="ActionForm中的成员1">循环体:<html:text name="ActionForm" property="ActionForm中的成员1"> <html:text name="ActionForm" property="ActionForm中的成员2"></fb:loop>其中“ActionForm中的成员1”和“ActionForm中的成员2”都是String的数组循环次数为“ActionForm中的成员1”的数组中元素的个数。同时在循环体中能够显示“ActionForm中的成员”。如何实现呢? 还有:在FormBean中定义String[] test在JSP中有循环体:<html:text name="FormBean" property="test">这样FormBean就可以自动给test进行赋值,赋值已经没有问题。但是如果显示的话就不行了,在JSP中有循环体:<html:text name="FormBean" property="test">要显示已经赋值的test,但是不能正常显示,显示结果为:[Ljava.lang.String;@18cb3a"> 已经可以实现循环啦!形式如下:<fb:loop formname="" property="">循环体</fb:loop>在写formname和property时,不用表达式,传入的就是一个String型的东西然后利用RequestUtils.lookup(pageContext, formbean, property,null)得到property,当然返回的是Object形式。然后在强制类型转换一下。但是 2004-03-24 19:22:00 帖子中的问题还没有解决。 汽车租赁系统 用Tomcat6.0搭建 Servlet问题 工作一年在上海能拿多少工资,Java开发 如何把Tomcat中工程的web.xml热部署、??? ibatis问题 开发过亚信CMPP3.0移动网关的高手进~!高分! struts,不太明白的地方!!! 请问XML中 名称空间是指什么 关于用XMLhttp.send传数据在服务器端接受的问题(请帮忙阿) maven怎么处理多个平行module,共享配置文件的情况? 求助!在线等待!! jboss中如何部署CMP数据源,数据源是(ORACLE9i),好头疼,走了很多弯路,哪位高手帮忙指点一下
2。同意楼上。另外循环可以用<logic:iterate/>来作。
3。只要一个struts-config.xml中定义如
<action path="/A".... >
<forward name="success" path="/xxx.do"/>
</action>
那么调用A.do成功时,会调用xxx.do。
4。Struts和其他形式的WebApplication应该可以进行互通,如同一个project中既用到了
tiles框架,和struts框架,他们之间可以资源共享
5。可以把action中的form ,cast成你要的ActionForm,或new一个这样的ActionForm,在这个form中调用你要的属性的set方法,那么传到jsp中,jsp中会显示你设的相应的值。
问题1我试过很多不同的路径了,还是不行问题2能不能给出详细的例子问题5我new了一个新的ActionForm,并进行了适当的赋值,但是当转移到另一个JSP中并没有显示出我赋的值
例子可以上网找找,csdn上就有一些。
问题5:
你的那个jsp中的属性值要包含在form中,form的名字可以在struts-config中定义,也可以在jsp
中定义,但是new的新的ActionForm的类型一定要和struts-config.xml中定义的匹配。
现在,只在IT界进行推广使用,欢迎各位使用,且留下你的个人资料,特别是你现在所从事的领域。
请记得网址:http://www.51lookfor.com 。
51lookfor是IT人交流的桥梁,你也来注册吧?
应用举例,想找从事java的IT人,请搜索:it java或java。
我尝试了多种方法可是不行呀!?
我用的方法是<html:link href><html:link>和javascript,主要是链接的路径。
唯一链接成功的路径是Action.do但是他的转向是Action的input路径,没有进入Action中。
问题5:
做法和你描述的应当是一样的。首先建立一个FormBean,自动在struts-config中声明,同时在Jsp中的<html:form name="FormBean名字" type="FormBean的路径" action="">
然后在form中的Field中这样写道<html:text property="password"/>当然property的名字是在FormBean中声明的变量。结果不行呀。
但是我用一个formbean对应多个jsp就没有问题了。
ps:我用的是JBuilder
"xxxxx"和你struts-config.xml中定义的一样。
http://expert.csdn.net/Expert/topic/2782/2782363.xml?temp=3.162783E-02
问题3、4、5已经解决
问题4中在同一个project中的不同结构的webapplication可以进行资源的共享。主要还是问题1没有解决!在一个JSP中要实现转向多个Action怎么实现呢?另一个问题,如何将JSP表单中的属性绑定到FormBean中声明的变量?:如下面的代码,
<html:form name="allForm" type="untitled1.AllForm" action="/test1Action">
<html:text property="username"/>
<html:submit>提交</html:submit>
</html:form>
当提交后可以在test1Action中得到username的值
但是在这个JSP中却得不到allForm(FormBean)中的username的值
如果JSP中的<html:text property="username"/>
改写为<html:text name="allForm" property="username"/>
就可以得到穿过来的值了。那么在JSP中将各种表单对象绑定到FormBean中不同的变量,应当怎样写呢?如果每一个表单对象都需要写出name="FormBean",会比较累。在开始的Form中声明怎么就不行呢?naomaomao(孬毛毛) 那个看不太懂呀!
<%
String orderValue = classlist.getForumClassNo();
%>
<html:text property="order" size="2" maxlength="2" value="<%=orderValue%>"/>
</logic:iterate>
naomaomao(孬毛毛) 能把你写的东西解释一下吗?谢谢!
是arrylist,里面存的是bean的数组,每次循环取出一个bean的对象,把这个对象里的属性值都拿出来做显示。<html:text property="order" size="2" maxlength="2" value="<%=orderValue%>"/>就是这个页面要动态显示的一个text元素,他的vlaue是从上面哪个循环体通过classlist.getForumClassNo();取出来的~~这样做你就会看到页面上有多个text元素,他们的名字都一样,但是value的值不同~~
是指javascript中
得不到 "document.allForm.username.value = ??"的值吗?
应该不会吧。
能否先帮我解决一下问题1呀?
另有就是我在struts结构中的JSP页面输入中文,但是当我在debug的时候下面监视显示的却是乱码,但是在显示出来又回复成中文了,如何让整个过程都不是乱码呢?GBK和GB2312我都试过了。
formbean中定义了:
String[] Value;和起相关的get和set方法在jsp中,我想利用如下的结构,给value赋值和显示value的值:
<html:logic >
<html:text>
</html:logic>
naomaomao(孬毛毛) 你的程序是还在Action中做了操作吗?我觉得我的没有必要做任何操作,能够显示和赋值就可以了。
<html:link href="./action.do">按钮</html:link> 可以成功。
<html:link page="/action.do">按钮</html:link> 可以成功。
关键还是连接路径的问题。
但是转移到了action的input路径中的JSP页面,并没有进入accion中,进行操作。
如果input中没有给出jsp的页面路径,服务器就会报错。
中“按钮”是固定文字,还是<input type="button" name="按钮" value="xxx"> ?
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>lc</shortname>
<uri>http://jakarta.apache.org/struts/tags-lc-1.0.0</uri>
<tag>
<name>loop</name>
<tagclass>untitled1.LoopTimeTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>formbean</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
这是我写的一个非常简单的taglib,为什么一编译就报错呢?我是完全按照JBuilder中其它的tld写的!错误如下:
"index4.jsp": org.apache.jasper.JasperException: XML parsing error on file /WEB-INF/lc.tld: (line 1, col -1): 缺少文件根组件。
<html:link href="/action.do">按钮</html:link>
但是转移到了action的input路径中的JSP页面,并没有进入accion中,进行操作。
如果input中没有给出jsp的页面路径,服务器就会报错。
<html:form action="/test1Action">
<html:text name="allForm" property="username"/><br>
<html:text name="allForm" property="password"/><br>
<html:submit>开始</html:submit>
<br>
<html:link href="test2Action.do">test</html:link>
</html:form>
点击“开始”就转到了上面定义的test1Action,没有问题
但是,点击“test”就无法转移到test2Action中,而是转移到test2Action中Input的jsp界面。
public String getStr(String str) {
if (str != null)
{
try
{
String temp_p = str;
byte[] temp_t = temp_p.getBytes("ISO8859-1");
String temp = new String(temp_t);
return temp;
}
catch (UnsupportedEncodingException e) {}
}
return null;
}
就可以了,当然还想请教为什么会出现乱码,和其它的解决方法!
(ps:GBK和GB2312我都试了,解决不了)另一个问题:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>lc</shortname>
<uri>http://jakarta.apache.org/struts/tags-lc-1.0.0</uri>
<tag>
<name>loop</name>
<tagclass>untitled1.LoopTimeTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>formbean</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
这是我写的一个非常简单的taglib,为什么一编译就报错呢?我是完全按照JBuilder中其它的tld写的!错误如下:
"index4.jsp": org.apache.jasper.JasperException: XML parsing error on file /WEB-INF/lc.tld: (line 1, col -1): 缺少文件根组件。
在解析xml时出错,看看你的tld中文件开始的地方(line 1, col -1)有没有非法的字符如
全角的空格。
formbean是一个固定ActionForm对象:AllForm.java
循环次数是对象AllForm中的一个成员loop。但是,如果写成<fb:loop formbean="AllForm">
则报错,因为JBuilder把AllForm当作了String型的数据,无法转换为AllForm型的实际上我想和JBuilder里面已有的标签一样,
如:<html:text name="formbean" property="...">
那么他就可以自动编译,得到相应的formbean,还可以自动转换类型。
如果像我写的那样则还要在JSP中写出得到AllForm的语句:<jsp:useBean id="allForm" class="untitled1.AllForm" scope="request"/>
如何实现像<html:text>的功能呢?我的想法是想实现一种循环,
标签形式如下:
<fb:loop formbean="ActionForm" property="ActionForm中的成员1">
循环体:<html:text name="ActionForm" property="ActionForm中的成员1">
<html:text name="ActionForm" property="ActionForm中的成员2">
</fb:loop>
其中“ActionForm中的成员1”和“ActionForm中的成员2”都是String的数组
循环次数为“ActionForm中的成员1”的数组中元素的个数。
同时在循环体中能够显示“ActionForm中的成员”。
如何实现呢?
在FormBean中定义String[] test
在JSP中有循环体:<html:text name="FormBean" property="test">
这样FormBean就可以自动给test进行赋值,赋值已经没有问题。但是
如果显示的话就不行了,
在JSP中有循环体:<html:text name="FormBean" property="test">
要显示已经赋值的test,但是不能正常显示,显示结果为:[Ljava.lang.String;@18cb3a">
形式如下:
<fb:loop formname="" property="">
循环体
</fb:loop>
在写formname和property时,不用表达式,传入的就是一个String型的东西
然后利用RequestUtils.lookup(pageContext, formbean, property,null)
得到property,当然返回的是Object形式。然后在强制类型转换一下。但是 2004-03-24 19:22:00 帖子中的问题还没有解决。