[英]Customize the value of struts2 textfield tag using OGNL
我有一個包含用戶信息的數據庫。 當用戶登錄后,我在會話上注冊了用戶,如下所示:
ActionContext.getContext().getSession().put("loggedUser", user);
我想在我的jsp頁面中獲取用戶信息,以便用此信息填充struts2文本字段。 我嘗試使用以下代碼,但是它不起作用:
<%@page import="java.util.Map"%>
<%@page import="com.opensymphony.xwork2.ActionContext"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="UbiMail.*" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
User user = (User) ActionContext.getContext().getSession().get("LoggedUser");
%>
<html>
<head>
</head>
<body>
<s:form method="POST" action="UpdateAction">
<s:actionerror/>
<s:textfield name="uname" label="Username" value="#session.LoggedUser.getUsername"/>
<s:property value="#session.LoggedUser.getUsername()"/>
<s:password name="password" label="Password"/>
<s:password name="cPassword" label="Confirm password"/>
<s:textfield name="fname" label="First name" value="#session.loggeduser.getFname()"/>
<s:textfield name="lname" label="Last name" value="#session.loggeduser.getLname()"/>
<s:textfield name="popServer" label="POP server" value="#session.loggeduser.getPopServer()"/>
<s:textfield name="popUsername" label="POP username" value="#session.loggeduser.getPopUsername()"/>
<s:password name="popPassword" label="POP password"/>
<s:textfield name="mobilePhone" label="Mobile phone" value="#session.loggeduser.getMobilePhone()"/>
<s:textfield name="filter" label="Notification filter" value="#session.loggeduser.getSms()"/>
<s:checkbox name="sms" label="Enable SMS notification"/>
<s:submit value="Update"/>
</s:form>
</body>
請給我幫助。
代替這個
<s:textfield name="uname" label="Username" value="#session.LoggedUser.getUsername"/>
用這個
<s:textfield name="uname" label="Username" value='<s:property value="%{#session.loggedUser.getUsername}"/>'/>
類似地,您可以對其余字段執行操作。
另一個與LoggedUser
和loggedUser
不匹配的東西是,在Java代碼密鑰中是loggedUser
而不是LoggedUser
,因此在jsp中使用loggedUser
。
主題外:我認為您不需要在jsp代碼中使用scriptlet。
此標記將生成名稱為“ uname”且值為“#session.LoggedUser.getUsername”的文本輸入。
您想從會話中讀取價值。 當然,您可以通過以下方式讀取值:
<s:textfield name="#session.LoggedUser.getUsername" label="Username" value="#session.LoggedUser.getUsername"/>
但我不認為您需要輸入名稱為“#session.LoggedUser.getUsername”)
因此解決方案是:
<input type="text" name="uname" value="<s:property value="#session.LoggedUser.username"/>"/>
在Struts 2.3上有效: value="%{#session.loggedUser.username}"
這不行
value="#session.LOGIN.name"
這工作
value="%{#session.LOGIN.name}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.