gpt4 book ai didi

forms - 在 Struts1 中预填充表单

转载 作者:行者123 更新时间:2023-12-04 17:56:52 24 4
gpt4 key购买 nike

我有一个 jsp 作为我的 View ,如果选择了一个,它会显示一个用于添加新用户/更新用户的表单。如果选择了用户,我不知道如何预填充我的表单。我阅读了使用 2 个操作的解决方案,具有相同的表单,其中一个仅用于填充字段,然后用于提交数据。
但是,这对我不起作用,因为在加载 jsp 时没有调用我的操作(在表单的操作属性中定义的操作)(也无法真正解释这一点,菜单和页面是在 xml 中定义的文件)。我不明白如何在我的 jsp 中指定第二个 Action ,以及如何确保在第一次加载 jsp 时调用该 Action 。如果可能的话,我更喜欢不涉及 AJAX 的解决方案。谢谢。

最佳答案

当您拥有 Struts 的强大功能时,为什么还要选择 AJAX。我有一个简单的例子(经过测试)给你。

MyForm.java

    package com.tusar.action;

import java.io.Serializable;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;

public class MyForm extends ActionForm implements Serializable{

private static final long serialVersionUID = 1043346271910809710L;
private String fullName = null;

public String getFullName() {
return fullName;
}

public void setFullName(String fullName) {
this.fullName = fullName;
}

/*This method will be called when you press the reset button
or load the form. You may want to populate the form here also*/

public void reset(ActionMapping mapping, HttpServletRequest request){
String reset = (String)request.getAttribute("myForm.reset");
if ((null != reset)|| ("true".equals(reset))) {
fullName = null;
}
}
}

MyFormSetupAction.java
    package com.tusar.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class MyFormSetupAction extends Action{

/*Set your form-bean properties here*/

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
MyForm hwForm = (MyForm) form;
hwForm.setFullName("tusar");
return mapping.findForward("success");
}

}

MyFormSuccessAction.java
package com.tusar.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class MyFormSuccessAction extends Action{

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return mapping.findForward("success");
}

}

struts-config.xml
    <?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

<!-- ==================== Form Bean Definitions -->

<form-beans>
<form-bean name="myForm" type="com.tusar.action.MyForm">
<form-property name="fullName" type="java.lang.String"/>
</form-bean>

<!-- ============= Global Forward Definitions -->

<global-forwards>
<!-- Default forward to "Welcome" action -->
<!-- Demonstrates using index.jsp to forward -->
<forward name="home" path="/home.do"/>
</global-forwards>

<!-- ===================== Action Mapping Definitions -->

<action-mappings>

<!-- This action will load the form-->

<action path="/home"
type="com.tusar.action.MyFormSetupAction"
name="myForm"
validate="false"
input="/WEB-INF/jsp/home.jsp">

<forward name="success" path="/WEB-INF/jsp/home.jsp" />
</action>

<!-- This action will evalutae the form and pass form data to
success page-->

<action path="/successAction"
type="com.tusar.action.MyFormSuccessAction"
name="myForm"
validate="true"
input="/WEB-INF/jsp/home.jsp">

<forward name="success" path="/WEB-INF/jsp/success.jsp" />
</action>

</action-mappings>

<!-- ============= Message Resources Definitions -->

<message-resources parameter="MessageResources" />

</struts-config>

主页.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false"%>
<html>
<head>
<title>Struts 1</title>
</head>
<body>

<html:form action="/successAction.do">

Name:
<html:text property="fullName"></html:text>

<html:submit value="Next"></html:submit>

<html:reset value="Cancel"></html:reset>

</html:form>

</body>
</html>

成功.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page isELIgnored="false"%>
<html>
<head>
<title>Successful !</title>
</head>
<body>
<h3>Your details:</h3>

Name:

<bean:write name="myForm" property="fullName" />

</body>
</html>

每次调用 首页.do 行动, 全名 属性填充 《图萨尔》 .如果您需要任何进一步的关联,请发表评论,我很乐意为您提供帮助。谢谢!

关于forms - 在 Struts1 中预填充表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6944625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com