我觉得我可能非常接近解决方案,但我就是无法掌握它。
程序的基本流程:
首先,您填写表格并提交。操作类将把对象存储在会话中。第二页使用迭代器来显示所有名称并超链接它们,这样当您单击名称时,它会将您带到一个可以编辑信息的页面(因此第三页是一个预先填充了所有名称的表单)来自用户点击的对象的信息)。数据是使用 GET 发送的,但我无法提取传递的值以将其设置为文本字段的值。
这里有一些代码需要澄清: 第一页(添加初始信息):
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Add a Contact </h1>
<s:form action="ContactAction" namespace="/example" method="post" >
<s:textfield name="firstName" label="First Name" size="20" />
<s:textfield name="lastName" label="Last Name" size="20" />
<s:submit value="Submit"/>
</s:form>
</body>
第二页(显示联系信息并带有超链接):
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<s:url action="index.action" var="urlTag" />
<s:a href="%{urlTag}">Add Another Contact</s:a>
<table border="1">
<s:iterator value="#session.contacts" var="contact">
<tr>
<s:url value="http://localhost:8080/Project/example/EditContact.jsp" var="urlTag" includeParams="get" >
<s:param name="firstName"> <s:property value="firstName"/> </s:param>
<s:textfield label="First Name" name="firstName" key="firstName" required="true" size="25" />
</s:url>
<td>
<s:property value="lastName"/>
<s:a href="%{urlTag}"> <s:property value="lastName"/> </s:a>
</td>
</tr>
</s:iterator>
</table>
如您所见,在上面(第二页),
firstName
已成功显示在文本字段中。
当您点击
lastName
时,它会通过 GET 请求发送信息(它成功了,因为我可以在 URL 中看到 ?firstName=bob
)
第三页(表格应预先填充数据):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Edit a Contact </h1>
<s:form action="ContactAction" namespace="/example" method="post" >
<s:param name="firstName"> <s:property value="firstName"/> </s:param>
<s:textfield label="First Name" name="firstName" key="firstName" value="%{contact.firstName}" required="true" size="25" />
<s:property value="lastName" />
<s:textfield name="lastName" label="Last Name" size="20" />
<s:submit value="Submit"/>
</s:form>
</body>
第 3 页的代码不会使用
firstName
值填充 firstName
文本字段(即使它已通过 GET 成功传递)
Struts 有相当于 PHP 的
$_GET['firstName']
吗?
如何使用传递的 GET 值填充文本字段?
我正在抓着我的头发试图弄清楚这一点!任何指导将不胜感激。
当然它有等效的,但是要填充表单,您不需要它,因为表单应该自动填充。为此,您需要使用文本字段的名称创建操作 bean 属性并初始化它们。只要将数据保存在会话中,您就可以将会话值检索到操作属性。了解它是如何在简单的 Hello World 应用程序中完成的。