小弟在学习struct的时候遇到一个初始化Form的问题,现在请各位指点。先贴出代码,再说问题:
<!-- 使用struct标签的表单 -->
<html:form  action="/set"  method="post" >
<html:text property="userName" value="" />
</html:form>
=================================================================
// 对应的ActionForm代码
public class SetForm extends ActionForm {
protected String userName="";

public void setUserName(String userName){
this.userName = userName;
} public String getUserName(){
return userName;
}
}另外,在Cookie中,存放了一个名称为userName的值
我现在的问题是,如果我想在JSP页面加载时,从Cookie中获取userName来初始化form中的userName,我应该怎样做呢?(注意,我不想将读Cookie的代码写到JSP页面中)请各位帮忙,先谢谢了

解决方案 »

  1.   


    <html:text property="userName" value="" />把读取cookie的值给userName,把value去掉
      

  2.   


    进入这个表单页面之前
    先在Action里从cookie里读取userName,存在request里

    <html:text property="userName" value="${userName}" />
      

  3.   

    <html:text property="userName" value="${userName}" />
      

  4.   

    (注意,我不想将读Cookie的代码写到JSP页面中) 试试:<html:hidden property="userName" value="cookie中的username" />
      

  5.   

    谢谢各位兄弟,不过好像以上的方法还是没有解决问题。因为我是想在第一次加载JSP时就要取得Cookie的值来初始化,而我知道在初始化时,是不会创建Action的,那么怎样来取得request呢?好像以上各位的方法都是要先在Action中来取得Cookie的,那既然初始化没有触发Action的创建,应该是不可行吧?如果我想通过Cookie来取得userId,然后再由userId在数据库找到userName,那又应该怎样做呢?既然struts那么受人喜爱,那应该有解决这类问题的办法吧?我不是想刁难大家,因为这个问题我实现是想不出解决办法,希望大家能帮下小弟,再次谢谢大家!
      

  6.   


    动态表单不是主要完成动态生成setter和getter的吗?请问怎样取得request???
      

  7.   

    有个变通的办法,就是写一个空的Action,里面写获取Cookie值的代码,然后forward到你需要的页面上去说白了,你需要初始化的JSP页面是从一个.do上跳过去的
      

  8.   


    刚好想到办法,好像就是tianyao_gs所说的方法,谢谢!我现在的JSP代码如下,具体的Cookie读取和其它操作就可以完全在action中操作了,哈哈<!-- 
    JSP页面代码
    --><!-- forward到.do页面,这样就可以创建action了 -->
    <c:if test="${ThisActionForm.userId==null}">
     <jsp:forward page="set.do" />
    </c:if><!-- 使用struct标签的表单 -->
    <html:form  action="/set"  method="post" >
        <html:text property="userName" value="" />
    </html:form>
    结贴吧,辛苦大家了