猜一下
第一个 把 companyName 本身当作一个String对象赋给property
第二个 引用了companyName变量
第一个 把 companyName 本身当作一个String对象赋给property
第二个 引用了companyName变量
解决方案 »
- java生成xml报错!!!急急急!!求各位帮忙!
- 请教各位高手一个关于数据库搜索的问题
- 如何实现通过分析txt文档中某个字段,能够得到要求输出!
- java web打印的问题?
- 我的处女作,花了一个月写的基于ssh和mysql的图书馆图书管理系统,功能都已实现。不知道水平如何,特拿出来请大侠指正批评
- 需要同时访问多个包内的实体bean, EJB3.0或者EJB2.1能不能解决?怎么解决?
- webwork 中interceptor为何不起作用?
- 一个界面设计的问题, 大家来帮帮我吧, 有分给呀!
- 推荐一些讲java3d的教材或资料吧,谢谢啦
- APP接口
- struts+spring+hibernate问题
- jsp无法使用bean的问题 在线等
quote:
我的Form中有VO一个company(其中有一个companyName String型属性)对象及一个companyName String型属性当我jsp中如下时,正常
<html:text property="compnayName"/>
但当我这样写是就说找不到get,set方法
<html:text property="company.compnayName"/>
---------------------------------
不知道你是要干什么,<html:text property="compnayName"/>这是生成一个文本框,类似于
html中的<input type="text" name="compnayName">,你可以在struts-config.xml文件找到你的这个FormBean里面肯定有个
<form-bean name="*" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="compnayName" type="java.lang.String" />
</form-bean>
配置文件是和你界面上显示的是对应的,这样以后就可以在action里面用
String compnayName = form.getString("compnayName");得到你输入的值,
如果你Struts-config.xml里面字段属性是compnayName,那么你的
<html:text property="company.compnayName"/>是错误的。如果你想给这个文本框绑定值,那么你首先必须定义一个对象,也就是所谓的pojo,这个里面字段必须有get,set方法,不然就会报你说的这个错误,没有set和get方法。然后你在你的jsp页面里面通过执行action的传过来的值,定一一个bean,然后在用bean里面的字段。
举例:..
public abstract class AbstractTeacher implements java.io.Serializable {
// Fields private String pk;
private String name;
private String isntavile;
// Constructors /** default constructor */
public AbstractTeacher() {
}
/** full constructor */
public AbstractTeacher(String name, String isntavile) {
this.name = name;
this.isntavile = isntavile;
}
// Property accessors public String getPk() {
return this.pk;
}
public void setPk(String pk) {
this.pk = pk;
} public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
} public String getIsntavile() {
return this.isntavile;
}
public void setIsntavile(String isntavile) {
this.isntavile = isntavile;
}
public class Teacher extends AbstractTeacher implements java.io.Serializable { // Constructors /**
*
*/
private static final long serialVersionUID = 1L;
/** default constructor */
public Teacher() {
}
/** full constructor */
public Teacher(String name, String isntavile) {
super(name, isntavile);
}
}
假如我有一个action叫做
findTeacher.do
里面写了一些这样的代码
....
Teacher t = teacherDAO.findByName("张三");
request.setAttribute("zs",t);
然后转到disDetailTeacher.jsp页面
<html>
<body>
...
<bean:define id="teacher" name="t"/>
//这个bean里面的name属性就是你action里面传过来的,他是一个Teacher对象
//如果你要显示就可以如下方式
<html:text property="name" value="${teacher.name}"/>
//或者这样也行
<html:text property="name" value="<bean:write name='teacher' properyt='name'/>"/>
//如果你的Teacher对象里面没有定义name的get和set方法,那么就会报找不到get,set方法
</body>
</html>
其实我没有用象你这样
我用struts还属于学习状态,用struts用得比较简单
我的配置是这样的
<form-beans>
<form-bean
name="companyForm"
type="com.owenlin.business.web.action.company.CompanyForm"
/>
</form-beans>
<action
path="/saveCompany"
type="com.owenlin.business.web.action.company.CompanyAction"
name="companyForm"
scope="request"
input="failure"
unknown="false"
validate="false"
>
<forward
...................______________________________________________________________________
pojo: company 确保有get,set companyNamepublic class Company implements Serializable { /** identifier field */
private String companyId; /** nullable persistent field */
private String compnayName; /** nullable persistent field */
private String description; ................... /** full constructor */
public Company(String companyId, String compnayName, String description, String tradeName, String managerId, Long photoId, Float priorLevel, String website) {
this.companyId = companyId;
this.compnayName = compnayName;
this.description = description;
this.tradeName = tradeName;
this.managerId = managerId;
this.photoId = photoId;
this.priorLevel = priorLevel;
this.website = website;
} /** default constructor */
public Company() {
} /** minimal constructor */
public Company(String companyId) {
this.companyId = companyId;
} /**
* @hibernate.id
* generator-class="assigned"
* type="java.lang.String"
* column="company_id"
*
*/
public String getCompanyId() {
return this.companyId;
} public void setCompanyId(String companyId) {
this.companyId = companyId;
} /**
* @hibernate.property
* column="compnay_name"
* length="255"
*
*/
public String getCompnayName() {
return this.compnayName;
} public void setCompnayName(String compnayName) {
this.compnayName = compnayName;
}
.....................
____________________________________________________________________
companyForm: public class CompanyForm extends BaseForm {
private String action;
private Company company;
private String compnayName;
private String description;
public String getCompnayName() {
return compnayName;
}
public void setCompnayName(String compnayName) {
this.compnayName = compnayName;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
______________________________________________________________________
companyActionpublic class CompanyAction extends BaseAction {
protected final Log log = LogFactory.getLog(getClass());
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
CompanyForm cform=(CompanyForm)form;
CompanyManager cManager=(CompanyManager)getBean("companyManager");
cManager.saveObject(cform.getCompany());
return map.findForward("success");
}
}
__________________________________
companyForm中的companyName只是我做测试用的
我本来想只要一个company对象就行了
这样action就好简单,接收jsp传来的company对象就往后台程序service扔就行了我原来也有一些struts开发经验,是在一个大项目中,很多配置工作别人都做好了。现在也有半年没有搞程序了,我记得当时的jsp文件是就写company.companyName就可以了最近又想找工作,才自己一个人练练,没想到遇到很多问题,其实是因为很多东西自己没有亲手试过,在大项目中就一个代码工人,呵呵
public class CompanyForm extends BaseForm {
private String action;
private Company company=new Company; //就这样
private String compnayName;
private String description;很简单的问题,搞了很久,后来找了原来的代码看了看,就发现了