collection="arr1"这里应该是arr2吧

解决方案 »

  1.   

    你action里往request里塞的值是arr2,怎么jsp上用的arr1?
      

  2.   

    用el表达式!你不用怎么能取得值啊!collection="arr1"改为collection="${arr1}"
      

  3.   

     xml:     
    <action path="/category"
           scope="request"
           type="org.ss.struts.action.SelectAction">  
          </action>jsp:
                <html:form action="/category.do" enctype="multipart/form-data" method="post">
                <html:select property="categoryName">
    <html:option value="请选择">请选择</html:option>
    <html:options collection="${categoryList}" property="categoryId" labelProperty="categoryName"/>
    </html:select><span class="red">*</span>
                </html:form>
    ACTION:HttpSession session = request.getSession();
    ArrayList categoryList = new ArrayList();
    ProductCategoriesDaoImpl pcDaoImpl = new ProductCategoriesDaoImpl();
    String category_id1 = request.getParameter("category_id");
    long category_id = new Long(category_id1);
    categoryList = pcDaoImpl.showAllCategories(category_id);
    request.setAttribute("category_id", category_id);
    return new ActionForward("/productUpload.do");ProductCategoriesDaoImplString sql = "select CATEGORY_NAME from PRODUCT_CATEGORIES";
    ArrayList arraylist = (ArrayList) getHibernateTemplate().find(sql);
    return arraylist还是不对,各位给我看看!谢了!org.apache.jasper.JasperException: An exception occurred processing JSP page /test.jsp at line 20<html:form action="/category.do" enctype="multipart/form-data" method="post">
    20就是这一行
      

  4.   

    arr1改成arr1之后
    你直接执行*.do看看是否能出现结果。。
      

  5.   

    不好意思,写错了,应该是 arr2 犯了同样的错误哎
      

  6.   

    <html:form action="/category.do" enctype="multipart/form-data" method="post">         //  at line20 就是这一行 
      

  7.   

    <html:options collection="${categoryList}" property="categoryId" labelProperty="categoryName"/> 
    首先 属性collection="categoryList" 不用EL。
    第二,属性property和labelProperty应该是一对key和value,labelProperty是显示的值,property是对应的key.但是在你的ACTION中没有看到你的list里放的是key、value对应的BEAN对象或是map.根据楼主的意思我测试了一下,通过了,代码如下,楼主可以看一下是否是你出错的原因。struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
      <data-sources />
      <form-beans>
       <form-bean name="categoryForm" type="com.yourcompany.struts.CategoryForm"></form-bean>
      </form-beans>
      <global-exceptions />
      <global-forwards />
      <action-mappings>
       <action path="/test" type="com.yourcompany.struts.SelectAction">
       <forward name="success" path="/select.jsp"></forward>
       </action>
      
       <action path="/category" type="com.yourcompany.struts.CategoryAction"
       name="categoryForm">
       <forward name="success" path="/product.jsp"></forward>
       </action>
      </action-mappings>
      <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
    </struts-config>CategoryForm.javapackage com.yourcompany.struts;import org.apache.struts.action.ActionForm;public class CategoryForm extends ActionForm{

    private static final long serialVersionUID = 1L;
    private String name; public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    }
    }SelectAction.javapackage com.yourcompany.struts;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;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 SelectAction extends Action{ @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    ArrayList list = new ArrayList();

    Bean bean1 = new Bean("1", "aa");
    Bean bean2 = new Bean("2", "bb");
    Bean bean3 = new Bean("3", "cc");
    list.add(bean1);
    list.add(bean2);
    list.add(bean3);

    //       for(int i=0;i<5;i++){
    //        Map map = new HashMap();
    //        map.put("categoryId","aa");
    //        map.put("categoryName",i);
    //        list.add(map);
    //       }

    request.setAttribute("categoryList", list);

    return mapping.findForward("success");
    }}Bean.java
    [code=Java]
    package com.yourcompany.struts;public class Bean {
    private String categoryId;
    private String categoryName;

    public Bean(String categoryId, String categoryName)
    {
    this.categoryId = categoryId;
    this.categoryName = categoryName;
    }

    public String getCategoryId() {
    return categoryId;
    }
    public void setCategoryId(String categoryId) {
    this.categoryId = categoryId;
    }
    public String getCategoryName() {
    return categoryName;
    }
    public void setCategoryName(String categoryName) {
    this.categoryName = categoryName;
    }
    }select.jsp
    [code=HTML]
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
      
      <body>
    <html:form action="/category.do" method="post">
    <html:select property="name">
    <html:option value="请选择">请选择 </html:option>
    <html:options collection="categoryList" property="categoryId"
    labelProperty="categoryName" />
    </html:select>
    <span class="red">* </span>
    </html:form>
    </body>
    </html>
    [/code]
    [/code]
      

  8.   

    代码没帖好,下边jsp和bean帖到ACTION的code标签里了。呵呵。
      

  9.   

    <html:options标签的collection属性必须是页面作用域的,即arr1或arr2必须是页面作用域内的集合,你的是request内的,
    改用<html:optionsCollection property="你的集合名" lable="显示名" value="实际值"/>即可。
      

  10.   

    你的后台封装的list是以map形式存储的么?或者存储的是key、value对应的BEAN对象。
    还有你把页面报错的详细原因帖出来<html:form action="/category.do" enctype="multipart/form-data" method="post">        //  at line20 就是这一行 
    只有在form标签内的都有可能是出现问题的原因。