Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts2验证消息出现两次_Java_Hibernate_Jsp_Configuration_Struts2 - Fatal编程技术网

Java Struts2验证消息出现两次

Java Struts2验证消息出现两次,java,hibernate,jsp,configuration,struts2,Java,Hibernate,Jsp,Configuration,Struts2,我正在尝试struts验证,但是错误消息被打印了两次。我的action类是follow.OSAction.java。我在其中使用了hibernate。我认为validate方法被调用了两次 package net.ajeet.os.view; import java.util.List; import net.ajeet.os.controller.OSManager; import net.ajeet.os.model.OSDetail; import com.opensymphony.

我正在尝试struts验证,但是错误消息被打印了两次。我的action类是follow.OSAction.java。我在其中使用了hibernate。我认为validate方法被调用了两次

package net.ajeet.os.view;

import java.util.List;

import net.ajeet.os.controller.OSManager;
import net.ajeet.os.model.OSDetail;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;


public class OSAction extends ActionSupport  {

    private static final long serialVersionUID = 9149826260758390091L;
    public OSDetail osdetail= new OSDetail();
    private List<OSDetail> osdetails_list;
    public OSDetail getOsdetail() {
        return osdetail;
    }

    public void setOsdetail(OSDetail osdetail) {
        this.osdetail = osdetail;
    }

    private Long id;

    private OSManager linkController= new OSManager();
/*  @Override
    public OSDetail getModel() {
        return osdetail;
    }*/
 /*   public OSAction() {
        linkController = new OSManager();
    }

    public String execute() {
        this.osdetails_list = linkController.list();
        return SUCCESS;
    }

   */

    public String add() {

        try {

            linkController.add(getOsdetail());
            //linkController.add(osdetail);
        } catch (Exception e) {
            e.printStackTrace();
        }
        this.osdetails_list = linkController.list();
        return SUCCESS;
    }

  /*  public String delete() {
        linkController.delete(getid());
        return SUCCESS;
    }*/

    public List<OSDetail> getOsdetails_list() {
        return osdetails_list;
    }

    public void setOsdetails_list(List<OSDetail> osdetails_list) {
        this.osdetails_list = osdetails_list;
    }

   /* public Long getid() {
        return id;
    }

    public void setid(Long id) {
        this.id = id;
    }
*/

    public void validate()
    {
      if (osdetail.getOSname() == null || osdetail.getOSname().trim().equals(""))
       {
     addFieldError("osdetail.OSname","The OS Name is required");

      }
        if (osdetail.getOSversion() == null || osdetail.getOSversion().trim().equals(""))
       {
          addFieldError("osdetail.OSversion","The OS Version is required");
       }
    }



}
package net.ajeet.os.view;
导入java.util.List;
导入net.ajeet.os.controller.OSManager;
导入net.ajeet.os.model.OSDetail;
导入com.opensymphony.xwork2.ActionSupport;
导入com.opensymphony.xwork2.ModelDriven;
公共类OSAction扩展了ActionSupport{
私有静态最终长serialVersionUID=9149826260758390091L;
public OSDetail OSDetail=新建OSDetail();
私人名单(详情);;
公共OSDetail getOsdetail(){
返回osdetail;
}
公共void setOsdetail(OSDetail OSDetail){
this.osdetail=osdetail;
}
私人长id;
专用OSManager linkController=新OSManager();
/*@覆盖
公共OSDetail getModel(){
返回osdetail;
}*/
/*公开行动(){
linkController=新的OSManager();
}
公共字符串execute(){
this.osdetails_list=linkController.list();
回归成功;
}
*/
公共字符串add(){
试一试{
linkController.add(getOsdetail());
//linkController.add(osdetail);
}捕获(例外e){
e、 printStackTrace();
}
this.osdetails_list=linkController.list();
回归成功;
}
/*公共字符串删除(){
linkController.delete(getid());
回归成功;
}*/
公共列表getOsdetails_List(){
返回OSU列表的详细信息;
}
公共无效设置详细信息列表(列表详细信息列表){
this.osdetails\u list=osdetails\u list;
}
/*公共长getid(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
*/
public void validate()
{
if(osdetail.getOSname()==null | | osdetail.getOSname().trim().equals(“”)
{
addFieldError(“osdetail.OSname”,“操作系统名称是必需的”);
}
if(osdetail.getOSversion()==null | | osdetail.getOSversion().trim().equals(“”)
{
addFieldError(“osdetail.OSversion”,“需要操作系统版本”);
}
}
}
下面是我的Index.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title>OS Manager - Struts2 Hibernate Example</title>
</head>
<body>
 
<h1>OS Manager</h1>
<s:actionerror/>
 
<s:form action="add" method="post" >
<s:hidden name="OSid" value="%{id}" />
    <s:textfield name="osdetail.OSname" label="name" />
    <s:textfield name="osdetail.OSversion" label="version"/>
    <s:textfield name="osdetail.OSnotes" label="notes"/>
    <s:submit value="Add OS Details" align="center"/>
    <s:reset value="Reset" />

</s:form>
 
 
<h2>OS Details</h2>
 <table>
<tr>
    <th>OS Name</th>
    <th>OS Version</th>
    <th>OS Notes</th>
</tr>
<s:iterator value="osdetails_list" var="osdetail">
    <tr>
        <td><s:property value="OSname"/></td>
        <td><s:property value="OSversion"/></td>
        <td><s:property value="OSnotes"/></td>
    </tr> 
</s:iterator>
</table>
</body>
</html>

OS管理器-Struts2 Hibernate示例
 
作业系统管理器
 
    
    
    
    
 
 
操作系统详细信息
操作系统名称
操作系统版本
操作系统说明
    
        
        
        
     
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.enable.DynamicMethodInvocation"
        value="false" />
    <constant name="struts.devMode" value="false" />

    <package name="default" extends="struts-default" namespace="/">

         <action name="add"
            class="net.ajeet.os.view.OSAction" method="add">
            <result name="success" type="chain">index</result>
            <result name="input" type="chain">index</result>
        </action>


        <action name="index"
            class="net.ajeet.os.view.OSAction">
            <result name="success">index.jsp</result>
            <result name="input">/index.jsp</result>
        </action>



    </package>
</struts>][2]
enter code here
![
指数
指数
index.jsp
/index.jsp
][2]
在这里输入代码

这是因为您错误地使用了
“链”
结果。除非你知道自己在做什么,否则不要使用它。要修复错误,您应该像这样更改配置

<action name="add" class="net.ajeet.os.view.OSAction" method="add">
  <result type="redirectAction">index</result>
  <result name="input">/index.jsp</result>
</action>

<action name="index" class="net.ajeet.os.view.OSAction">
  <result>/index.jsp</result>
</action>

指数
/index.jsp
/index.jsp

这是因为您错误地使用了
“链”
结果。除非你知道自己在做什么,否则不要使用它。要修复错误,您应该像这样更改配置

<action name="add" class="net.ajeet.os.view.OSAction" method="add">
  <result type="redirectAction">index</result>
  <result name="input">/index.jsp</result>
</action>

<action name="index" class="net.ajeet.os.view.OSAction">
  <result>/index.jsp</result>
</action>

指数
/index.jsp
/index.jsp

只需在struts.xml中的操作之前实现拦截器ref name=“defaultStack”

只需在struts.xml中的操作之前实现拦截器ref name=“defaultStack”