radio 保存中文倒不如保存为 char 类型的,既节省空间,又处理方便

解决方案 »

  1.   

    to:defonds
    因为数据要存在到数据库,为了数据的友好,才选择了中文
      

  2.   

    to:rui888 
    编码格式用的是utf-8,我也怀疑是乱码,但无论是在action层打印及用if语句判断,还是在jsp页面用<struts:property value="#request.sex" />显示,都没发现异常。
      

  3.   

    <struts:if test="#request.sex == '男'">checked 男</struts:if> 改成
    <struts:if test="#request.sex ==\"\"">checked 男</struts:if> 
      

  4.   

    to suciver :
    将单引号改成双引号,确实可以了,非常感谢!不过有几点不明,还望请解答:
    1.在radio中,为什么英文也是单引号,却可以生效呢?
    2.在同一个页面中,为什么下拉列表框select中,同样是汉字,用单引号却可以生效呢?(当然,我刚刚试了改成双引号,也是同样可以生效的)<select name="dupty" class="register_font4" id="register_dupty">
          <option <struts:if test="#request.dupty == '主任' ">selected</struts:if> >主任</option>
          <option <struts:if test="#request.dupty == '副主任' ">selected</struts:if> >副主任</option>
          <option <struts:if test="#request.dupty == '科长' ">selected</struts:if> >科长</option>
          <option <struts:if test="#request.dupty == '职员' ">selected</struts:if> >值班员</option>
     </select>
      

  5.   

    一.试了一下c:if标签,无论是改成单引号,还是\+双引号,都能生效,那肯定是struts:if标签的问题了
    <c:if test="${request.sex == '男'}"> checked 男 </c:if> 
    <c:if test="${request.sex == '女'}"> checked 女 </c:if>二.通过百度,看到struts官网有一个例子:
    http://struts.apache.org/release/2.1.x/docs/why-wont-the-if-tag-evaluate-a-one-char-string.html
    该例子对这个问题的初步解释:如果使用单引号的话,OGNL会误将字符串解析成字符,这跟JAVA语言的效果是一样的。
    但即使这样,这几个问题还是不明:
    1.在radio中,为什么英文也是单引号,却可以生效呢?OGNL会误将字符串解析成字符这种现象在遇到中文与英文时,怎么会有不同效果呢?
    2.在同一个页面中,为什么下拉列表框select中,同样是汉字,用单引号却可以生效呢?有请高人进一步解答!
      

  6.   

    其实很简单楼主你观察下就知道了,单引号就是代表字符的,那为啥你英文或一个以上的字符用单引号也会解析成字符串呢,
    这不是很明显了吗,ognl的解析中如果是单引号中只有一个字符的它就认为是字符不是字符串,如果一个以上的字符的你用单引号或双引号都认为是字符串,双引号才是在任何情况下代表字符串。