`
xiaofengtoo
  • 浏览: 493029 次
  • 性别: Icon_minigender_1
  • 来自: xiamen
社区版块
存档分类
最新评论

struts2 <s:select>赋值方法

阅读更多
我的应用中,有个产品由哪个单位供应,所以在录入产品的时候供应商(厂家)希望是下来选择:
使用<s:select>一直报错:
tag 'select', field 'list', name 'supplierId': The requested list key '#product.getComPanys' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]

我分别采用了4中方法:上面报错只是其中一种,但4中方法报错都一致。。。我google、baidu了 看了N多贴依然是解决不了超级郁闷,还请给位多指教!!!

下面贴出我的类以及处理方法:

ProductAction
package model.activion;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import model.service.CompanyService;
import model.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import util.UtilRandow;
import util.UtilString;
import com.opensymphony.xwork2.ActionSupport;
import entity.Company;
import entity.Product;

@SuppressWarnings("serial")
public class ProductAction extends ActionSupport {
	@Autowired
	private ProductService productService;
	@Autowired
	private CompanyService companyService;

	private String productNo;
	private String productName;
	private String supplierId;
         
	private List<Company> comPanys;   [color=red]//第一种与第二种都采用List赋值[/color]
	private HashMap  mapCom;          [color=red]//第三种 才偶那个Map赋值[/color]
    //保存产品
    public String   saveProduct(){
    	Product product = new Product();
    	product.setProductNo("CP"+UtilRandow.getDateRandow());
    	product.setProductName(productName);
        product.setSupplierId(supplierId);
    	boolean falge = productService.addProduct(product);
    	
    	if (falge==true) return SUCCESS;
    	else return ERROR;
    }  
	public String getProductNo() {
		return productNo;
	}

	public void setProductNo(String productNo) {
		this.productNo = productNo;
	}

	public String getProductName() {
		return productName;
	}

	public void setProductName(String productName) {
		this.productName = productName;
	}
       
	public void setSupplierId(String supplierId) {
		this.supplierId = supplierId;
	}
	public String getSupplierId() {
		return supplierId;
	}
       [color=red]//Map 取值方法获取数据库种所有的company [/color]
	public HashMap getMapCom() {
		List<Company> ls = this.companyService.queryCompany(null, null);
    	   for(Company c :ls){
    		mapCom.put("companyId",c.getCompanyId());
    		mapCom.put("companyName",  c.getCompanyName());
    	   }
		return mapCom;
	}

	public void setMapCom(HashMap mapCom) {
		this.mapCom = mapCom;
	}
       [color=red]//List 取值方法获取数据库种所有的company [/color]
       public List<Company> getComPanys() {
		List<Company> comPanys = new ArrayList<Company>();
		comPanys = this.companyService.queryCompany(null, null);
		return comPanys;
	}

	public void setComPanys(List comPanys) {
		this.comPanys = comPanys;
	}
}



UtilBean:只是其中一个方法有使用  //第四种采用<s:bean>的方式赋值
package model.bean;
import java.util.ArrayList;
import java.util.List;
import model.service.CompanyService;
import org.springframework.beans.factory.annotation.Autowired;
import util.UtilString;
import entity.Company;
public class UtilBean {
	@Autowired
	private CompanyService companyService;
	private List<Company> lc  = new ArrayList<Company>();
	public List<Company> getLc() {
		List<Company> listCom  = this.companyService.queryCompany(null, null);
		if (UtilString.isEmpty(listCom)) lc = null;
		else lc = listCom;
		return lc;
	}
	public void setLc(List<Company> lc) {
		this.lc = lc;
	}
}

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>
	 <package name="model.activion" extends="struts-default">
                <!-- 输入校验-->
	 	<action name="validateProduct"
	 		class="model.activion.ProductAction">
	 		<result name="input">/jsp/product.jsp</result>
	 	</action>
	 	<action name="addProduct" class="model.activion.ProductAction"
	 		method="saveProduct">
	 		<result name="success">/jsp/success.jsp</result>
	 		<result name="error">/jsp/error.jsp</result>
	 		<result name="input">/jsp/product.jsp</result>
	 	</action>	 	
	 </package>
</struts>


JSP界面:product.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>
		<title>产品信息</title>
                <s:head theme="ajax"/>
	</head>
	<body>
		<center>
			<s:tabbedPanel id="productList" theme="ajax" doLayout="false" closeButton="pane"
				labelposition="top" selectedTab="product" >
				<s:div id="product" theme="ajax" label="基本信息">
					<s:form action="validateProduct" validate="true">
						<s:textfield name="productNo" label="产品编号" readonly="true" />
						<s:textfield name="productName" label="产品名称" required="true" />
						<!-- 第1种  List-->
						<s:select list="companys" listKey="companyId"
							listValue="companyName" name="supplierId" label="厂家名称"
							headerKey="" headerValue="" />
						<!-- 第2种 List-->						
						<s:action name="product" id="getComPanys" />
						<s:select list="#product.getComPanys" listKey="companyId"
							listValue="companyName" name="supplierId" label="厂家名称"
							headerKey="" headerValue="" />
						<!-- 第3种 Map-->
						<s:select list="mapCom" key="companyId"
							value="companyName" name="supplierId" label="厂家名称"
							headerKey="" headerValue="" />
						<!-- 第4种 List-->
						<s:bean id="ub" name="model.action.UtilBean" />
						<s:select list="#ub.lc" listKey="companyId"
							listValue="companyName" name="supplierId" label="厂家名称"
							headerKey="" headerValue="" />
						<s:submit value="确定" action="addProduct" />
						<s:reset value="重置" />
					</s:form>
				</s:div>
				<!-- 图片上传未处理  -->
				<s:div id="image" theme="ajax" label="图片上传">
					<s:form>
						<s:textfield name="productName" label="产品名称"/>
						<s:file name="file" accept="jpeg/gif/*" label="图片一"/>
						<s:file name="file" accept="jpeg/gif/*" label="图片二"/>
						<s:file name="file" accept="jpeg/gif/*" label="图片三"/>
						<s:submit value="上传" />
						<s:reset value="重置" />
					</s:form>
				</s:div>
			</s:tabbedPanel>
		</center>
	</body>
</html>
分享到:
评论
5 楼 xiaofengtoo 2009-04-12  
谢谢 楼上兄弟 我试试看 !!!
4 楼 daoyongyu 2009-04-10  
在第一种list=companys改成list=%{companys}试试。
3 楼 laojiang 2009-02-01  
总结的好!
2 楼 xiaofengtoo 2009-01-30  
首先保证;
 List<Company> listCom  = this.companyService.queryCompany(null, null);  

返回一定有值!!!
1 楼 xiaofengtoo 2009-01-30  
实体类:
供应商:company
package entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "bsc_company", catalog = "jxc_db")
public class Company implements java.io.Serializable {

	// Fields

	private String companyId;
	private String companyNo;
	private String companyName;

        @GenericGenerator(name = "generator", strategy = "uuid.hex")
	@Id
	@GeneratedValue(generator = "generator")
	@Column(name = "company_id", unique = true, nullable = false, length = 50)
	public String getCompanyId() {
		return this.companyId;
	}

	public void setCompanyId(String companyId) {
		this.companyId = companyId;
	}

	@Column(name = "company_no", length = 50)
	public String getCompanyNo() {
		return this.companyNo;
	}

	public void setCompanyNo(String companyNo) {
		this.companyNo = companyNo;
	}

	@Column(name = "company_name", length = 50)
	public String getCompanyName() {
		return this.companyName;
	}

	public void setCompanyName(String companyName) {
		this.companyName = companyName;
	}
}

相关推荐

    Struts标签集合简介

    `&lt;s:set&gt;` 赋值给变量,`&lt;s:sort&gt;` 对集合进行排序,`&lt;s:submit&gt;` 创建提交按钮,`&lt;s:subset&gt;` 输出集合的子集。 T. `&lt;s:tabbedPanel&gt;, &lt;s:table&gt;, &lt;s:text&gt;, &lt;s:textarea&gt;, &lt;s:textfield&gt;`: 创建选项卡面板、表格...

    struts2标签详细讲解

    3. `&lt;s:select&gt;`:创建单选选择框,可以是静态或动态数据。 4. `&lt;s:set&gt;`:设置变量,可以在特定范围内赋值。 5. `&lt;s:sort&gt;`:对列表进行排序,可以通过自定义比较器。 6. `&lt;s:submit&gt;`:创建提交按钮,用于提交表单...

    Struts2标签库详解

    2. `&lt;s:set&gt;`:创建一个变量并赋值,常用于在JSP页面中传递数据。例如,`&lt;s:set var="myVar" value="Hello World!"/&gt;`。 3. `&lt;s:if&gt;`和`&lt;s:else&gt;`:用于条件判断,与Java中的if...else语句类似,方便在视图层进行...

    struts2.0标签使用

    `&lt;c:choose&gt;`标签用于条件判断,它可以包含一个或多个`&lt;c:when&gt;`子标签以及一个可选的`&lt;c:otherwise&gt;`子标签。每个`&lt;c:when&gt;`子标签定义了一个条件测试,如果测试结果为真,则执行该`&lt;c:when&gt;`块内的代码;如果所有...

    struts2.0标签

    6. `&lt;s:select&gt;`:用于创建下拉选择框,可以动态加载选项数据。 UI类标签的一个关键特点是它们能自动处理Action的验证错误,通过`&lt;s:fielderror&gt;`或`&lt;s:actionerror&gt;`标签显示错误信息。 二、非UI类标签 非UI类...

    struct2标签

    - `&lt;s:select&gt;`:创建单选下拉列表。 R. 操作按钮: - `&lt;s:submit&gt;`:创建提交按钮,用于提交表单。 以上只是Struts2标签库的一部分,实际使用中还有更多标签用于处理各种需求,如循环、标签迭代、验证等。这些...

    WebWork ww标签

    这里`&lt;ww:set&gt;`将字符串`'aaaaaaaaaaaaaa'`赋值给`tt1`变量,`&lt;ww:property&gt;`标签则用于获取这个变量的值并在页面上显示。 `&lt;ww:property&gt;`标签用于显示模型对象的属性值,它可以从页面作用域、请求作用域、session...

    struts2标签库详解

    2. `s:set`:设置变量,如 `&lt;s:set name="myVar" value="Hello World" /&gt;` 可以将“Hello World”赋值给名为myVar的变量。 3. `s:if` 和 `s:else`:条件判断,与Java的if-else语句类似,用于控制页面元素的显示。 4....

    struts1.x标签详解

    Item &lt;bean:write name="index" /&gt;: &lt;bean:write name="item" /&gt;&lt;br/&gt; &lt;/logic:iterate&gt; ``` ##### 2. logic:present 用于判断某个对象是否存在于某个作用域内。 **示例代码**: ```jsp &lt;logic:present name=...

    Java struts2 ongl 标签 jsp页面

    例如,在提供的代码片段中,可以看到`&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;`引入了Struts2的标签库,这使得在JSP中可以方便地使用OGNL表达式来操作页面上的Java对象。 ```jsp &lt;%request.setAttribute("sex",...

    java笔试面试题及答案.pdf

    `&lt;c:out&gt;`、`&lt;c:set&gt;`、`&lt;c:if&gt;`都是JSTL标签(ABC正确),`&lt;c:errors&gt;`通常用于显示验证错误,也是JSTL的一部分(D正确)。 15. Struts框架理解: Struts可以处理上传功能(A错误),基于MVC模式(B正确),可能...

    详解struts1的配置文件.doc

    `&lt;Data-sources&gt;`标签主要用于配置Struts1应用程序的数据源,即与数据库的连接方式。这一配置对于实现数据持久化至关重要。 ##### 2.1 数据源配置 - **标签**: `&lt;data-source&gt;` - **类型** (`type`):指定了数据源...

    Strut2 in action [英文版]

    &lt;s:select name="country" list="{'China','USA','Japan'}" headerKey="-1" headerValue="--Select Country--"/&gt; &lt;/body&gt; &lt;/html&gt; ``` **3. 结果(Results)** - **定义**:结果(Results)定义了动作执行完成...

    js添加select下默认的option的value和text的方法

    HashMap&lt;String, Object&gt; map = new HashMap&lt;&gt;(); map.put("BM", "001"); // BM对应数据库中的某个字段 map.put("MC", "小苹果"); // MC对应展示给用户看的文本 sjxList.add(map); // 将map添加到List集合中 } `...

    JS动态创建Table,Tr,Td并赋值的具体实现

    `&lt;s:select&gt;`是Struts2框架的一个标签,用于创建可选列表,其属性如`list`、`listKey`和`listValue`分别用于指定数据源、键和值字段。 总结一下,这个案例涉及到的知识点包括: 1. JavaScript事件处理:`change()`...

    ssh+javaScript

    - `下拉框的赋值问题.txt`:在JSP中,使用`&lt;s:select&gt;`标签可以方便地为HTML select元素填充选项,这些选项可以从后台数据源动态生成。需要注意的是,正确设置list属性和value属性以确保正确绑定数据。 8. **多表...

    ajax struts2 下拉框赋值(适合所有)

    本文将详细介绍如何在Struts2框架下利用Ajax技术为下拉框动态赋值,这是一个适用于所有下拉列表的通用方法。 首先,我们需要创建一个实体类来存储下拉框的选项信息。这个实体类称为`DictionaryBean`,包含三个属性...

    JavaScript连接数据库实例

    shtml += "&lt;tr&gt;&lt;td&gt;" + rs("st_id") + "&lt;/td&gt;&lt;td&gt;" + rs("st_name") + "&lt;/td&gt;&lt;td&gt;" + rs("password") +"&lt;/td&gt;&lt;/tr&gt;"; rs.moveNext; } shtml += "&lt;/table&gt;"; document.write(shtml); ``` 在上面的代码中,我们首先...

    struts2数据库常用操作

    List&lt;userInfo&gt; userList = new ArrayList&lt;&gt;(); while (rs.next()) { userInfo user = new userInfo(); // 设置user对象的属性值 user.setUsername(rs.getString("username")); // 其他属性赋值... userList....

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

Global site tag (gtag.js) - Google Analytics