jsp页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
            String paraFiles = "";
            if (request.getParameter("filenames") != null && request.getParameter("filenames").length() > 0) {
                paraFiles = request.getParameter("filenames");
            }
            String[] strSelectItem = paraFiles.split(";");
%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <select id="selectFile">
            <option value="">----请选择----
            <%
            int i = 0;
            for (i = 0; i < strSelectItem.length; i++) {
                if (strSelectItem[i].trim().length()>0){
            %>
            <option value= <%=strSelectItem[i]%> ><%=strSelectItem[i]%>
                    <%
                }
            }
                    %>
        <input type="text" id="paraFiles" name="paraFiles" value=<%=paraFiles%>>
    </body>
</html>当参数filenames="你好 .doc"的时候,<select>可以正常显示,但是<input type="text" id="paraFiles" name="paraFiles" value=<%=paraFiles%>>
这里只显示"你好",后面的就没有了,请问怎么解决?我看到有很多人说参数传递不要用空格,可是<select>里显示正常啊,如果不用空格,用别的替换,该怎么写呢?

解决方案 »

  1.   

    paraFiles = request.getParameter("filenames").trim();
    试试
      

  2.   

    那是因为你value= <%=paraFiles%>没加双引号。
    改成这样就好了value="<%=paraFiles%>"。
    单引号应该也行
      

  3.   

    1.value="<%=paraFiles%>" value中添加引号,这是个习惯自己感觉这样做比较好
    2.paraFiles = request.getParameter("filenames").trim(); 过滤掉带有空格的参数。那样就不会有问题了,trim()函数为系统自带,主要用来过滤空格和防止黑客sql注入技术
      

  4.   

    pageEncoding="UTF-8"  是不是存在编码问题呀?
    paraFiles = request.getParameter("filenames").trim(); 只能去掉后面的空格吧 
      

  5.   

      <input type="text" id="paraFiles" name="paraFiles" value= "<%=paraFiles%>">加上 " 号
     我试了,可以!!
      

  6.   

    你可以引用个js文件,然后像他们说的,用trim()来将空格给去掉
      

  7.   

    各位,我是参数中间带空格,比如“你好 我很好”,这个用trim可以去掉?
    请看清楚啊。
      

  8.   

    楼主的问题,没怎么看,至于16楼,用个小方法解决了就OK了么。。
    不论你中间带几个空格。。String searchString = request.getParameter("这个参数是什么");
    String[] aArray = searchString.split("\\s+"); 
    String newString="";
    for (int i = 0; i < aArray.length; i++) { 
       newString+= aArray[i] ; 
    }
      

  9.   


    trim() 如何防止注入???
      

  10.   


            String searchString = "你好 我很好 我非常非常的好"; 
         String[] aArray = searchString.split("\\s+"); 
         String newString="";
         for (int i = 0; i < aArray.length; i++) { 
         newString+= aArray[i]; 
         }
         System.out.println(newString);
      

  11.   

    在传递参数前用java.net.URLEncoder.encode(String s)对参数编码一下,它会将空格转换为+号,在接收后用
    java.net.URLDecoder.decode(String s)对参数反编码试试!
      

  12.   

    要去掉空格我感觉这段不错:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>JsExample-8</title>
    </head>
    <script type="text/javascript">
        String.prototype.Trim = function(){return this.replace(/(^\s*)|(\s*$)/g,"");}  
        String.prototype.LTrim = function(){return this.replace(/(^\s*)/g,"");}   
        String.prototype.RTrim = function(){return this.replace(/(\s*$)/g,"");}
        
        var str="  abc  cd  ";
       
    var Lstr="  abc  cd  ef";
       
    var Rstr="  abc  cd  ";
        
       
    str=str.Trim();
      
    Lstr=Lstr.LTrim();
      
    Rstr=Rstr.RTrim();
        
      
    window.document.write("*"+str+"*"+"<br>");
      
    window.document.write("*"+Lstr+"*"+"<br>");
        
    window.document.write("*"+Rstr+"*"+"<br>");
    </script><body></body>
    </html>
      

  13.   


    还是星星厉害,这个解决了我的问题。
    前面我是在javascript里传参数的时候,用了encodeURI(str),接收参数的页面没有用
    java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8");
    现在好了。
    问题是,没有用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")的时候,<select>可以正常显示,不会乱码,<input>里就是乱码,这是什么原因呢?
    感觉这个编码问题,一直困扰着搞java的人,乱码不定什么时候就出来了,再加100分,求解上面的问题。
      

  14.   

    而且接收的时候,不用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8"),没有空格也没有问题啊,除了空格,还有什么特殊字符呢?
      

  15.   


    经过反复测试,这个是有影响的,非常有用!!!!!!!
    终于完成了这个上传的,中间碰到中文乱码,应该说所有的情况都碰到了吧,解决也是曲折的,经过摸索,总结如下: 1、所有页面都用UTF-8。 
    2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 
    3、javascript脚本里用encodeURI(str)。 
    4、适当的时候,在jsp里用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")。 
    5、最容易忽略的是使用"":value=" <%=paraFiles%>",一定要有引号。 例子源码:http://download.csdn.net/source/965319
      

  16.   

    paraFiles = request.getParameter("filenames").trim();