在Struts 2中获取get请求的值

时间:2013-12-15 03:03:51

标签: html forms jsp struts2 glassfish

我觉得我可能非常接近解决方案,但我无法掌握它。 程序的基本流程:首先填写表格并提交。操作类将对象存储在会话中。第二页使用迭代器显示所有名称并将它们超链接,这样当您单击一个名称时,它会转到一个页面,您可以在其中编辑信息(因此第三页是一个预先填充了所有信息的表单。用户点击的对象)。数据是使用get发送的,但我无法提取传递的值以将其设置为textfield的值。

以下是一些澄清的代码: 第一页(添加初始信息)

<%@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在文本字段中成功显示。 当你点击姓氏时,它会通过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值填充文本字段?

我拉着我的头发试图解决这个问题!任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

当然它具有等价物,但是要填充您不需要的表单,因为表单应该自动填充。为此,您需要使用textfields的名称创建action bean属性并初始化它们。只要您在会话中保留数据,就可以将会话值检索到操作属性。看看它是如何在简单的Hello World应用程序中完成的。