1.问题,如题所述,在使用struts1.x的时候用文件上传控件,每次刷新页面,其文本框中的路径总被刷掉了,请问高手怎么在刷新后值还保存在文本框中。
2.还有一个类似的问题就是,我要给<html:file>的文本框中页面第一次加载时赋一个保存在数据库中的文件路径?
查询网上听别人说struts1.x的文件上传控件只是可读的,没办法给他赋值,但是看到有些高手说可以用js控制,所以在此请教各位高手,怎么来解决我的这个问题?谢谢!

解决方案 »

  1.   

    <html:text property="你的form.上传的路径">
      

  2.   

    刷新页面的问题是不能用Javascript解决的
    因为Javascript的作用范围只是在客户端,刷新以后客户端内容会重新生成,javascript一样要被重新生成<html:file>生成的html代码好像是是<input type="file"> 
    input type=file 是没有办法在客户端的到file的路径的 
    所以你只能用其他方式实现了
      

  3.   

    <html:file   property="你的form的file属性”>
    是在不行的话就用   
    input type=file  value=“”
      

  4.   

    一般开发时候建议像<html:file> <html:select>这样标签尽量不要使用,不方便与js交互。
      

  5.   

    JS操作cookie,应该可以实现,不过麻烦了点
      

  6.   

    这样肯定是不行的,估计现在的话我只有改成<input type=file ... />控件了,但是不甘心啦,因为这个项目其他用的都是<html:file>控件啦,只是这个模块需要定义一个文件路径的初始值。还想等等有没有熟悉的,或者有过经验的朋友能够提供比较好的建议!谢谢大家的回复。
      

  7.   

    可以在action中 设置你的文件路径的值的,然后判断下,页面有没用路径值,没有为空,有就写上去。
      

  8.   

    遇到过一个类似的问题 如何提交数据后返回页面保持radio的选中状态<html:radio  property="rqtj" value="-1"  onclick="check(this.value)"><b><font size="2"> ??</font></b>   </html:radio> 
    <html:radio  property="rqtj" value="0"   onclick="check(this.value)"><b><font size="2"> ??</font></b>   </html:radio>
    <html:radio  property="rqtj" value="1"   onclick="check(this.value)"><b><font size="2"> ??</font></b>   </html:radio>
    <html:radio  property="rqtj" value="x"   onclick="check(this.value)"><b><font size="2"> ???</font></b>   </html:radio>private String  rqtj ="0"; 
     public String getRqtj() {
    return rqtj;
    }
    public void setRqtj(String rqtj) {
    this.rqtj = rqtj;
    }
      

  9.   

    楼上所说,<html:radio>是可以记忆状态值的。即便是页面跳转也可以在后台重新取值。
      

  10.   

    老兄可能没有看到我的问题中,好像这个<html:file>是只读的不能赋值,所以在此请教高手了,如果是可以赋值,那我也就能解决我的问题了,我现在就是想知道有没有其他,譬如js来实现的方法。
    谢谢!
      

  11.   

    很简单啊,你设置一个input隐藏域,刷新或者提交的时候将这个隐藏域的值传到 controller 里,然后再放回到这个隐藏域里面。
    file 那里在 js onload 的时候读取一下这个隐藏域的 value 就行了。
      

  12.   

    楼上说的不是很明白,值传到控件是指的把文件名赋值给<html:file>的文本框吗?就是这样赋值不行啦,好像没作用,这个控件是只读。而且刷新或者提交的后,我是要<html:file>的文本框还保存原来的路径,而不仅仅是得到这个值。
      

  13.   

    你把值用AJAX保存起来就可以了...刷新的时候value再带出来
      

  14.   

    我现在要处理的主要是第二个问题:
    就是给struts的文本框赋一个初始值,现在这么多天了好像还没有得到答案,难道我真的要改成<input type=file ...>控件了?
    希望那个高人能够指点一下。
      

  15.   

    看了一篇文章:http://blog.163.com/dylanic_wingnut@126/blog/static/10855493200810891928818/
    好像<input type="file" ... >也解决不了我的第二个问题了,难道真的没办法了?
      

  16.   

    网上查了下,笨方法
    <input id="f1" type="file" style="display:none">
    <input id="f2">
    <input type="button" value="浏览..." onClick="f1.click(); f2.value=f1.value;">
    <input type="button" value="赋值" onClick="f2.value='C:\test.doc'">
      

  17.   

    楼上的这种方法我也查到了,谢谢!嗯,是可以做到用<input type="file" ... >来达到我的要求啦,那我就只能用这个控件来实现文件上传了,<html:file ...>这个控件是实现不了了呀?
      

  18.   

    html:file就是input type=file ,没有任何区别
    只读的,无法写入
    就算用文本框代替显示,写入后也是无法上传
      

  19.   

    为了安全,input type=file的value是只读的,如果js能赋值那么你的本地文件岂不是都能被自动上传,所以要尽量避开这种设计
      

  20.   

    请问,是不是要改设计了呢?因为现在设计书就是要这样做啦?难道说服他,说实现不了这个功能?请fosjos指教。谢谢!