jsp1.jsp
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=GBK" %>
<%@ page errorPage="jsp1_error.jsp" %>
<html:html>
<head>
<title>
jsp1
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<html:form action="untitled1Action.do">
<br><br>
name : <html:text property="name"/><html:errors property="name"/><br/>
<html:select property="testSelect">
<html:optionsCollection property="list" label="test" value="id"/>
</html:select>
<html:submit/><html:cancel/></html:form>
</body>
</html:html>Untitled1Action.java
package testlist2;import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;public class Untitled1Action extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
Untitled1ActionForm untitled1ActionForm = (Untitled1ActionForm) form;
return null;
}
}Untitled1ActionForm.java
package testlist2;import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;public class Untitled1ActionForm extends ActionForm {
private String name;
private String testSelect;
test u = new test(); private ArrayList list = u.getTests(); public ArrayList getList() {
return list;
} public void setList(ArrayList list) {
this.list = list;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public void setTestSelect(String testSelect) {
this.testSelect = testSelect;
} public String getTestSelect() {
return testSelect;
} public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
/** @todo: finish this method, this is just the skeleton.*/
return null;
} public void reset(ActionMapping actionMapping,
HttpServletRequest servletRequest) {
}
}test.java
package testlist2;import java.io.Serializable;
import java.util.ArrayList;public class test implements Serializable {
private ArrayList mylist=new ArrayList(); public ArrayList getTests()
{
ArrayList list = null;
list=mylist;
return list;
}
public test() {
mylist.add("asdfasf");
}
}报错信息是:
javax.servlet.jsp.JspException: No getter method available for property test for bean under name asdfasf
at org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:214)
at org.apache.jsp.jsp1_jsp._jspx_meth_html_optionsCollection_0(org.apache.jsp.jsp1_jsp:263)
at org.apache.jsp.jsp1_jsp._jspx_meth_html_select_0(org.apache.jsp.jsp1_jsp:235)
at org.apache.jsp.jsp1_jsp._jspx_meth_html_form_0(org.apache.jsp.jsp1_jsp:163)
at org.apache.jsp.jsp1_jsp._jspx_meth_html_html_0(org.apache.jsp.jsp1_jsp:126)
at org.apache.jsp.jsp1_jsp._jspService(org.apache.jsp.jsp1_jsp:89)
……请高手帮一下忙,100分奉送
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=GBK" %>
<%@ page errorPage="jsp1_error.jsp" %>
<html:html>
<head>
<title>
jsp1
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<html:form action="untitled1Action.do">
<br><br>
name : <html:text property="name"/><html:errors property="name"/><br/>
<html:select property="testSelect">
<html:optionsCollection property="list" label="test" value="id"/>
</html:select>
<html:submit/><html:cancel/></html:form>
</body>
</html:html>Untitled1Action.java
package testlist2;import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;public class Untitled1Action extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
Untitled1ActionForm untitled1ActionForm = (Untitled1ActionForm) form;
return null;
}
}Untitled1ActionForm.java
package testlist2;import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;public class Untitled1ActionForm extends ActionForm {
private String name;
private String testSelect;
test u = new test(); private ArrayList list = u.getTests(); public ArrayList getList() {
return list;
} public void setList(ArrayList list) {
this.list = list;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public void setTestSelect(String testSelect) {
this.testSelect = testSelect;
} public String getTestSelect() {
return testSelect;
} public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
/** @todo: finish this method, this is just the skeleton.*/
return null;
} public void reset(ActionMapping actionMapping,
HttpServletRequest servletRequest) {
}
}test.java
package testlist2;import java.io.Serializable;
import java.util.ArrayList;public class test implements Serializable {
private ArrayList mylist=new ArrayList(); public ArrayList getTests()
{
ArrayList list = null;
list=mylist;
return list;
}
public test() {
mylist.add("asdfasf");
}
}报错信息是:
javax.servlet.jsp.JspException: No getter method available for property test for bean under name asdfasf
at org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:214)
at org.apache.jsp.jsp1_jsp._jspx_meth_html_optionsCollection_0(org.apache.jsp.jsp1_jsp:263)
at org.apache.jsp.jsp1_jsp._jspx_meth_html_select_0(org.apache.jsp.jsp1_jsp:235)
at org.apache.jsp.jsp1_jsp._jspx_meth_html_form_0(org.apache.jsp.jsp1_jsp:163)
at org.apache.jsp.jsp1_jsp._jspx_meth_html_html_0(org.apache.jsp.jsp1_jsp:126)
at org.apache.jsp.jsp1_jsp._jspService(org.apache.jsp.jsp1_jsp:89)
……请高手帮一下忙,100分奉送
property="list" 会导致到untitled1ActionForm里面去找名为"list"这个属性。
根据你的代码,它找到了list,然后开始迭代,你在list中放入了一个元素是字符串"asdfasf"。
然后进行到label="test" value="id" 这两句会到list的当前元素(被当成是bean)里面去找这属性test和属性id
而你的list中的元素仅仅是一个字符串,肯定找不到属性test,也就会出现
No getter method available for property test for bean under name asdfasf 这样的错误。你要想实现你的效果,你应该写一个bean,里面含有test和id属性以及它们的setter和getter,然后把这样的一些对象加到list中去就行了。
我该怎么填写list里面的内容呢?test.java
package testlist2;import java.io.Serializable;
import java.util.ArrayList;public class test implements Serializable {
// Fields private Integer id;
private String test; private ArrayList mylist=new ArrayList(); public ArrayList getTests()
{
ArrayList list = null;
list=mylist;
return list;
}
public test() {
mylist.add("testlist2.test");
} /** full constructor */
public test(String test) {
this.test = test;
}
// Property accessors public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public String getTest() {
return this.test;
} public void setTest(String test) {
this.test = test;
}
}
<html:options property="list">就行了。
另写一个bean如下:
package testlist2;public class TestBean
{
private String test;
private String id;
public String getTest()
{
return test;
}
public void setTest(String test)
{
this.test = test;
}
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
}test类做如下修改:
package test2;
import java.io.Serializable;
import java.util.ArrayList;public class test implements Serializable {
private ArrayList mylist=new ArrayList(); public ArrayList getTests()
{
ArrayList list = null;
list=mylist;
return list;
} private TestBean bean = new TestBean();
public test() {
bean.setTest("asdfasf");
bean.setId("1");
mylist.add(bean);
}
}