问题描述
看起来很基本,但我是 Struts2 的新手。
我使用 struts2 版本 2.5.26、Maven、tomcat 9.0、java jdk 1.8.0_241
看来我用来发送产品的代码是错误的,Action
中定义的struts.xml
无法获取。
我发送产品的JSP文件:
<%@ page pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<Meta charset="UTF-8">
<title>Nouveau produit</title>
</head>
<body>
<h1>Ajouter un nouveau produit</h1><br><br>
<form action="newProduit.action" method="post">
<div >
<s:textfield name="produit.nom" label="Nom " />
</div><br>
<div>
<s:textfield name="produit.prix" class="formH len150" label="Prix " />
</div><br>
<div style="position:relative;">
<label for="cat" class="formH len150">Catégorie :</label>
<select id="cat" name="produit.categorie" class="formH len150">
<option value="">--Choisir--</option>
<s:iterator value="categories" var="c">
<option value=" ${c.id } " > ${c.nom } </option>
</s:iterator>
</select>
</div><br>
<div >
<s:submit class="btn btn-vert" value="Envoyer" />
</div><br>
<div >
<s:a href="listeProduits.action" class="btn" >Retour liste produits</s:a>
</div>
</form>
</body>
</html>
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="true" />
<package name="actionsdiverses" extends="struts-default,json-default" namespace="/actions" >
<!-- other actions -- >
<action name="newProduit" method="nvProduit" class="actions.ProduitsAction">
<result name="success" type="redirect">listeProduits</result>
</action>
</package>
</struts>
ProduitsAction.java
文件:
package actions;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import entities.Produit;
import services.IMetiersBoutiqueFactory;
import services.MetiersBoutiqueFactory;
public class ProduitsAction extends ActionSupport implements ModelDriven{
private static final long serialVersionUID = 1L;
private IMetiersBoutiqueFactory services = new MetiersBoutiqueFactory();
private Produit produit;
public String nvProduit() {
try {
services.ajouterProduit(produit);
}catch (Exception e) {
e.getStackTrace();
}
return SUCCESS;
}
// other methods,properties,getters and setters
public Produit getProduit() {
return produit;
}
public void setProduit(Produit produit) {
this.produit = produit;
}
@Override
public Produit getModel() {
return produit;
}
}
发送的错误是:
com.opensymphony.xwork2.config.ConfigurationException: No result defined for action actions.ProduitsAction and result input
我尝试了其他一些解决方案,但我得到的最好的是带有 nom=null,prix=null,categorie=null
的产品。
我想我的问题出在这些文件中。 我可能会将其他文件或方法发送给您
实体Produit
:
package entities;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "produit")
public class Produit {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String nom;
private Double prix;
@ManyToOne
@JoinColumn(name="id_categorie",nullable=true)
private Categorie categorie;
public Produit(Long id,String nom,Double prix,Categorie categorie) {
super();
this.id = id;
this.nom = nom;
this.prix = prix;
this.categorie = categorie;
}
public Produit() {}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public Double getPrix() {
return prix;
}
public void setPrix(Double prix) {
this.prix = prix;
}
public Categorie getCategorie() {
return categorie;
}
public void setCategorie(Categorie categorie) {
this.categorie = categorie;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)