gpt4 book ai didi

java - 使用validate功能时是否需要在form中使用struts标签?

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:04 25 4
gpt4 key购买 nike

我通读了 struts 教程,但在 struts 验证方面遇到了一些困难(来源: http://www.tutorialspoint.com/struts_2/struts_validations.htm )。我想知道当我想使用struts框架提供的隐式validate()函数时是否有必要使用struts标签。有没有什么可能的方法可以让我不必使用 struts 标签,并且仍然允许我使用隐式验证函数以及选项“addFieldError”?

我曾尝试编写相同的代码,但似乎我们无法使用“addFieldError”,除非我们在表单中完全使用 struts 标签。谁能对此进行一些澄清?

下面是我尝试过的代码,但“addFieldError”不起作用,网页直接重定向到“struts.xml”中指定的页面,其中结果被指定为“输入”

/*public void validate()//Function to check implicit validations provided by Struts
{
System.out.println("Inside implicit validate\n");
if(!name.equalsIgnoreCase("harshit"))
{
addFieldError("name","Only Harshit is allowed in name field");
}
}*/

抱歉,我不熟悉这里的格式。

struts.xml的内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="false"/>
<package name="helloworld" extends="struts-default">
<action name="hello"
class="com.tutorialspoint.struts2.HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
<result name="error">/error.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>

Web.xml 的内容

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">

<display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

Index.jsp页面的内容

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function validate()
{
var empId= document.frm.empId.value;
var name=document.frm.name.value;
var letters = /^[A-Za-z]+$/;
var email=document.frm.email.value;
if(name=="")
{
//alert("Name should not be blank..");
document.getElementById("error").innerHTML="Name shouldnt be blank";
document.frm.name.focus();
return false;
}

else if(empId=="")
{
alert("Employee ID should not be blank");
document.frm.empId.focus();
return false;
}

else if(isNaN(empId)==true)
{
alert("Employee ID should be a number");
return false;
}
else if(!name.match(letters))
{
alert("Name should be an ablphabet");
return false;
}
else if(!email.match(".com"))
{
alert("Please enter a valid email");
return false;
}
}
</script>
<title>Hello World</title>
</head>
<body bgcolor="beige">
<h1>Employee Details</h1>

<form action="hello" name="frm" onSubmit="return validate()">

<label>Please enter your name</label><br/>

<input type="text" name="name"/><font size="4" color="red"> <div id="error"> </div></font>

<br/>
<label>Employee ID:</label><br/>
<input type="text" name="empId"/><br/>

<label>Email Id:</label><br/>
<input type="text" name="email">
<br/>
<label>Phone Number:</label><br/>
<input type="text" name="phone">
<br/>
<br/>

<br/>
<input type= "button" value="Check" onclick="return validate()">
<input type="submit" value="Submit"/>
</form>
</body>
</html>

我的 Action 课的内容

    package com.tutorialspoint.struts2;
import com.opensymphony.xwork2.ActionSupport;


public class HelloWorldAction extends ActionSupport
{
private String name ;
private String email;
private long phone;
private int empId;


public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getPhone() {
return phone;
}
public void setPhone(long phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}


public String execute() throws Exception
{
//String result=serverValidation();
String result="success";//Temporarily making it success as the server validation is commented. Aim is to check the implicit validate method provided by struts
return result;
}

/*public String serverValidation() throws Exception
{
long phnum= phone;
System.out.println("Phone="+phone);
System.out.println("phnum="+phnum);
System.out.println("Employee Id=" +empId);
int d=0;
while(phnum>0)
{
phnum=phnum/10;
d=d+1;
}
if(d==10)
return "success";

else
{
System.out.println("d="+d);
return "error";
}
}*/

public void validate()//Function to check implicit validations provided by Struts
{
System.out.println("Inside implicit validate\n");
if(!name.equalsIgnoreCase("harshit"))
{
addFieldError("name","Only Harshit is allowed in name field");
}
}



}

最佳答案

感谢@AleksandrM 和@AndreaLigios 提供答案。下面是一些详细的描述:

隐含的validate()即使不需要使用基于Struts2的表单标签,也可以使用Struts2框架提供的方法。您需要做的就是使用 <s:fielderror>在要显示错误消息的相应 jsp/html 页面中添加标记,然后使用 <param>标签来指定必须显示哪个参数的错误。参数名称应与 Action 类中使用的相同。请引用validate()上面代码中的方法来查看如何为特定参数定义错误消息。我们可以在 html/jsp 中使用以下代码片段来显示错误消息:

<s:fielderror>
<s:param> name</s:param>
</s:fielderror>

在这里,name是已完成验证的参数。

关于java - 使用validate功能时是否需要在form中使用struts标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26651855/

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