大家好,目前接手一个老系统改造,使用的是JSP+Struts1,里面使用了struts的标签库,现在我想做一个查询功能,其中一个要求是把用户输入在文本框的查询内容显示在查询结果页面(查询输入页面和查询结果页面是同一个jsp文件)的文本框里,原系统是这样做的:
假设查询和显示结果用的jsp文件为a.jsp
在a.jsp里使用如下标签:<!--与后台定义的actionForm关联-->
<jsp:useBean class = "com.vandagroup.ccb.log.LogInfo" id = "form" scope = "request" /><!--接受用户输入查询内容,并把上次的查询内容回显到此-->
<html:td type="search"><html:text name="keyword" value="<%=form.getKeyword()%>" /></html:td>
在后台action里传递装有前台输入查询内容的actionform到前台JSP页面:LogInfo bean = ( LogInfo )request.getAttribute( "LogInfo" );//得到前台的查询内容
request.setAttribute( "form" , bean );//回送前台查询内容到响应页面
return ( mapping.findForward( "list" ) );定向到响应页面
现在出现一个问题:
不能把值赋给<html:text>标签的value属性,导致不能回显查询内容,通过以下代码测试:System.out.println(form.getKeyword()==null?null:form.getKeyword().toString());//能得到后台传过来的值得出结论:<html:text>标签的value属性不能通过
<html:td type="search"><html:text name="keyword" value="<%=form.getKeyword()%>" /></html:td>]
的形式赋值,请问:
1、如何才能给struts的text标签赋值?
2、有没有代码更简洁美观的方法实现我所说的功能?
3、什么版本的struts能够通过<html:text property="age"/>的形式来与ActionForm进行绑定?(我目前用的标签不支持property这个属性)

解决方案 »

  1.   

    你用<html:标签,用name跟后台form属性对应肯定得不到值,你说不支持property这个属性,你干嘛一定要用这个标签,普通的<input type="text" name="" value="">难道这样不行吗,为什么一定要栽倒一棵树上不放
      

  2.   

    struts1的标签记不清了 不过你可以用jstl 通过request去取值 #keyword 
      

  3.   

    用这种方式吧:
    <html:text property="属性名和你form中的属性一致" styleId="kind_name" styleClass="input-read"  readonly="true"></html:text>
      

  4.   


    property这个属性在我的tld文件中没有定义,是否需要下载支持这个属性的struts标签?
      

  5.   

    struts-html.tld  有这个就搞定了
      

  6.   

    <html:text property="keyword" />直接这样写不可以吗
      

  7.   

    问题找到了,原来是派生struts标签类的代码写的有问题