在 Struts 2 中获取 GET 请求的值

问题描述 投票:0回答:1

我觉得我可能非常接近解决方案,但我就是无法掌握它。

程序的基本流程:

首先,您填写表格并提交。操作类将把对象存储在会话中。第二页使用迭代器来显示所有名称并超链接它们,这样当您单击名称时,它会将您带到一个可以编辑信息的页面(因此第三页是一个预先填充了所有名称的表单)来自用户点击的对象的信息)。数据是使用 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 值填充文本字段?

我正在抓着我的头发试图弄清楚这一点!任何指导将不胜感激。

html forms jsp struts2 glassfish
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.