<%
Users user=(Users)session.getAttribute("userInfo");
%>
<s:textfield name="username" value=""></s:textfield>value值里面要怎么写才能够拿到user里的username的值?试过好多种方法都不行
<s:textfield name="username" value="${user.username}"></s:textfield><s:textfield name="user.username" value="${username}"/><s:textfield name="user.username" value="#request.username"/>直接用<%=user.getUsername()%>也不行!
According to TLD or attribute directive in tag file, attribute value does not accept any expressions登陆后我把用户信息放到session里,用户想修改的时候我想给他显示以前的值,请问要怎么做才能让textfield 里显示user里的username值?谢谢!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【lax471】截止到2008-06-30 23:43:49的历史汇总数据(不包括此帖):
    发帖数:0                  发帖分:0                  
    结贴数:0                  结贴分:0                  
    未结数:0                  未结分:0                  
    结贴率:-------------------结分率:-------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    尝试用下面的: 
      <s:textfield name="user.username" value="#request.userInfo.username"/> 
      

  3.   

    打错了,尝试用下面的:   <s:textfield name="user.username" value="#session.userInfo.username"/> 
      

  4.   

    <s:textfield name="user.username" value="%{#session.userInfo.username}"/>
      

  5.   


    问题我是解决了,但用的不是这种方法。
    我一开始的想法是错误的,不应该用这种方法。
    用户登陆后把他的全部信息放在session里,这种做法很正常,但是用<s:textfield>,会提示你不支持任何表达式。
    我们为什么会用struts2的标签,不用html的标签,原因很简单,就是他在提交失败后会留住页面状态。
    反之,如果<s:textfield>的value属性支持表达式,那么提交失败后,它还会去读表达式里的值,也就是说它会还原成默认值,而不是用户修改后的值,这是我们都不想要的结果,我们要的是它既能显示默认值又能留住页面状态(修改过后的值)。所以,我们可以这样去做:
    我们去写一个GetUserInfo.action,在这个action里,我们去定义一个属性:Users user给它get,set方法,然后我们给他赋上session里的值,成功后页面跳转到jsp页面里,在jsp里面,我们这样去写:<s:textfield name="user.username"/>
    只要user里面有值,页面上就会显示我们想要的值,而用户修改后提交失败后也能留住修改过后的值,这才是我们想要的效果。
    当然,那个GetUserInfo.action就是修改个信息的超链接,而不是之前的jsp页面。
      

  6.   

    我在我博客上发了这篇文章,《struts2 <s:textfield> value属性默认值解决方案》欢迎各位给出更好的解决方案。
      

  7.   


    修改链接为:《struts2  <s:textfield> value属性默认值解决方案》欢迎指教!
      

  8.   

    <s:textfield name="user.username" value="%{#session.userInfo.username}"/>
    可用
      

  9.   

    修改链接为:《struts2  <s:textfield> value属性默认值解决方案》欢迎指教!
      

  10.   

    5楼的value="%{#session.userInfo.username}"这种是什么取值方式,哪位大虾能解释下呢
      

  11.   


    <p>不使用%:<s:url value="#foobar['foo1']" /></p>  输出:#foobar['foo1']<p>使用%:<s:url value="%{#foobar['foo1']}" /></p> 输出:bar
    说明了 %符号的用途是在标记的属性为字符串类型时,计算OGNL表达式的值。
      

  12.   

    [Quote=引用 15 楼  的回复:]
    引用 12 楼 的回复:
    5楼的value="%{#session.userInfo.username}"这种是什么取值方式,哪位大虾能解释下呢<s:set name="foobar" value="#{'foo1':'bar','foo2':'bar2'}" /><p>The value of key "foo1" is 
    <s:property value="#foobar['foo1']" /></p>
    <p>不使用%:<s:url value="#foobar['foo1']" /></p>  输出:#foobar['foo1']
    <p>使用%:<s:url value="%{#foobar['foo1']}" /></p> 输出:bar说明了 %符号的用途是在标记的属性为字符串类型时,计算OGNL表达式的值。