Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / - JSF - Error getting property from bean / 19 сообщений из 19, страница 1 из 1
23.10.2006, 14:53:05
    #34074175
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
на JSF:

есть jsp-шка (create.jsp) на которой есть:
<f:view>
<h:form id="frmEmp" binding="#{EmpBean.frmEmp}" >
<h:inputText id="fname" value="#{EmpBean.firstname}" />
<h:commandButton id="save_button" action="#{EmpBean.onClick}" value="save" /> </h:form>
</f:view>



есть com.fidel.EmpBean:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
  private  String firstname;
	   
  public  String getFirstName(){
    return  firstname;
	   }
	   
  public   void  setFirstName(String value){
   firstname = value;
          }

faces-config.xml:

<faces-config>

<navigation-rule>
<from-view-id>/menu.jsp</from-view-id>

<navigation-case>
<from-outcome>create</from-outcome>
<to-view-id>/create.jsp</to-view-id>
</navigation-case>

<navigation-case>
<from-outcome>view</from-outcome>
<to-view-id>/view.jsp</to-view-id>
</navigation-case>

<navigation-case>
<from-outcome>edit</from-outcome>
<to-view-id>/edit.jsp</to-view-id>
</navigation-case>

</navigation-rule>


<managed-bean>

<managed-bean-name>EmpBean</managed-bean-name>
<managed-bean-class>com.fidel.EmpBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<navigation-rule>
<from-view-id>/create.jsp</from-view-id>
<navigation-case>
<from-action>#{EmpBean.onClick}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/success_save.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-action>#{EmpBean.onClick}</from-action>
<from-outcome>failure</from-outcome>
<to-view-id>/failure.jsp</to-view-id>
</navigation-case>
</navigation-rule>

</faces-config>

При переходе на create.jsp Tomcat выдает вот такую ошипку!
org.apache.jasper.JasperException: javax.servlet.jsp.JspException: Error getting property 'firstname' from bean of type com.fidel.EmpBean

типа не может он взять значение firstname из бина.
...
Рейтинг: 0 / 0
23.10.2006, 15:16:41
    #34074272
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
getFirstname
setFirstname

name с маленькой буквы надо писать
...
Рейтинг: 0 / 0
23.10.2006, 16:03:57
    #34074489
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
Спасибо! Помогло!

Вот тока кнопка "save" не заработала, при нажатии так и остается на create.jsp - наверно все таки с navigation rules намудрил....

А насчет getFirstname и setFirstname - или я уже азы забыл, это в спецификации бинов описано?
...
Рейтинг: 0 / 0
23.10.2006, 16:14:47
    #34074536
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
в спецификации.

гетер = "get" + fieldname.substr(0,1).toUpperCase() + fieldname.substr(1,fieldname.length())

например,
поле filename
гетер getFilename

поле fileName
гетер getFileName
...
Рейтинг: 0 / 0
23.10.2006, 16:17:06
    #34074554
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
конструкция

<h:commandButton id="save_button" action="#{EmpBean.onClick}" value="save" />

означает, что при нажатии на кнопку, будет вызван метод
Код: plaintext
1.
 public  String onClick() {}
в бине EmpBean.

кстати, имя бина лучше писать с маленькой буквы: еmpBean
...
Рейтинг: 0 / 0
23.10.2006, 16:33:36
    #34074636
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
А почему Вы советуете писать имя бина с маленькой буквы: еmpBean ?

Вот такой бин и не работет, писал по образу и подобию работающего примера.
Вроде все правильно...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
 package  com.fidel;

 public   class  EmpBean  extends  FacesBean {

	     private   final  String DRIVER_CLASS;
	     private   final  String DB_HOST;
	     private   final  String DB_USER;
	     private   final  String DB_PASSWORD; 
	    

	    private  HtmlForm frmEmp =  new  HtmlForm();
	   
	    public  HtmlForm getFrmEmp(){
		    return  frmEmp;
	   }
	    
	    public   void  setFrmEmp(HtmlForm value){
		   frmEmp = value;
	   }
	    
	    

	    private  String firstname;
	   
	    public  String getFirstname(){
		    return  firstname;
	   }
	   
	    public   void  setFirstname(String value){
		   firstname = value;
	   }
	   
        private  String lastname;
	   
	    public  String getLastname(){
		    return  lastname;
	   }
	   
	    public   void  setLastname(String value){
		   lastname = value;
	   }
	   
	    private  String firstnameError;
	   
	    public  String getFirstnameError(){
		    return  firstnameError;
	   }
	   
	    public   void  setFirstnameError(String value){
		   firstnameError = value;
	   }
	   
	   
	    private  JdbcRowSetXImpl rowset;
	    public  JdbcRowSetXImpl getRowSet() {
		    return  rowset;
		     }    
	   
	    public   void  setRowSet(JdbcRowSetXImpl value){
		   rowset = value;
		    } 
	   
	   
	    public  EmpBean(){
		   // download db connect properties
	   DRIVER_CLASS =  this .getExternalContext().getInitParameter("driver_class");
	   DB_HOST =  this .getExternalContext().getInitParameter("db_host");
       DB_USER =  this .getExternalContext().getInitParameter("db_user");
       DB_PASSWORD =  this .getExternalContext().getInitParameter("db_password");
	   
           //  заполняем набор данных 
		// rowset = getDataSource();
		      
	   }
	   
	 	   
	  // button click handler
	   
	    public  String onClick(){
		    if (!validate())
			    return  "";
		   
		    boolean  result = saveToDatabase();
		   
		   // return value for navigation rules
		    if (result)
			      return  "success";
		    else 
			       return  "failure";
	   }
	   
	     private   boolean  validate(){
	    	// validating input values
	    	
	    boolean  result = true;
	    if  (firstname.equals("")){
		  firstnameError = "*";
		  result = false;
		  
	   }
	     // validating input last_name
	      if  (lastname.equals("")){
	    	  firstnameError = "*";
	    	  result = false;
	     }
	         return  false;
	    }
	   
	    // saving value into DB
	     private   boolean  saveToDatabase()
	    {
	         try 
	        {        
	             Class .forName(DRIVER_CLASS).newInstance();
	            Connection con = DriverManager.getConnection(DB_HOST, DB_USER, DB_PASSWORD);
	            Statement statement = con.createStatement();           
	            statement.execute("INSERT INTO emp (firstname, lastname) VALUES ('"+firstname+"', '"+lastname+"');");
	        }
	         catch (Exception e)
	        {
	             return  false;
	        }
	        
	            firstname = "";
	            lastname = "";
	           	        
	            return  true;
	      }
	  	
	    }
	   
...
Рейтинг: 0 / 0
23.10.2006, 16:54:24
    #34074718
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
<from-action>#{EmpBean.onClick}</from-action>

убери из facesconfig
...
Рейтинг: 0 / 0
23.10.2006, 16:59:13
    #34074734
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
Убрал, но к сожалению не заработало... кстати вроде во многих туториалах <from-action> метод </from-action> пишется
...
Рейтинг: 0 / 0
23.10.2006, 17:02:56
    #34074750
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
вроде и в create.jsp все правильно
create.jsp:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<html>
<body>
<f:view>

<h:form id="frmEmp" binding="#{EmpBean.frmEmp}" >

<h:inputText id="fname" value="#{EmpBean.firstname}" />

<h:inputText id="lname" value="#{EmpBean.lastname}" />

<h:commandButton id="save_button" action="#{EmpBean.onClick}" value="save" />

</h:form>

</f:view>

</body>

</html>
...
Рейтинг: 0 / 0
23.10.2006, 17:03:53
    #34074757
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
убери binding со всех элементов
добавь на страницу <h:messages/>

и еще бы посмотреть что логи пишут. может ошипка какая?
...
Рейтинг: 0 / 0
23.10.2006, 17:05:59
    #34074768
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
еще вариант: validate() возвращает false. тогда onClick() возвращает пустую строку
...
Рейтинг: 0 / 0
23.10.2006, 17:32:12
    #34074862
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
то есть, Вы предлогаете сделать так:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<html>
<body>
<f:view>
<h:form id="frmEmp" >

<h:inputText id="fname" value="#{EmpBean.firstname}" />

<h:inputText id="lname" value="#{EmpBean.lastname}" />

<h:commandButton id="save_button" action="#{EmpBean.onClick}" value="save" />

</h:form>
</f:view>
</body>
</html>
...
Рейтинг: 0 / 0
23.10.2006, 17:33:48
    #34074865
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
ага
...
Рейтинг: 0 / 0
23.10.2006, 17:49:03
    #34074915
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
тоже самое, опять create.jsp сама на себя ссылается

Вы говорили насчет логов, а какие читать ? stdout_20061023.log - ?
...
Рейтинг: 0 / 0
23.10.2006, 18:06:35
    #34074971
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
логи - ну, например, эти.

а дебаг можешь запустить? поставь брейк-поинт на onClick(), чтоб проверить, запускается ли вообще метод.

имплементация jsf от sun или myfaces? лучше использовать последнее
...
Рейтинг: 0 / 0
23.10.2006, 18:21:35
    #34075016
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
1.я в eclipse + myeclipse пишу, выбираю класс бина, а потом debug as и все дальше не знаю че делать?

2. насчет имплементации - смотрю в свойствах проекта и нигде не вижу где можно посмотреть ее. При создании проекта не помню что выбрал. А чем они принципиально отличаются jsf от sun или myfaces?
...
Рейтинг: 0 / 0
23.10.2006, 18:30:21
    #34075043
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
myfaces меньше глючит.
можно посмотреть используемые либы. в myfaces есть myfaces-api.jar


как работать в еклипсом - честно скажу, понятия не имею. я пользуюсь идеей - в ней вопросов с дебагом и пр не возникает. как то все сразу понятно.
...
Рейтинг: 0 / 0
23.10.2006, 18:44:06
    #34075074
fidel_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
по ходу у меня все таки jsf от sun, не нашел я библиотечку myfaces-api.jar

может у Вас есть какой нить не коммерческий проект на JSF - я был бы Вам очень признателен за наглядный пример.

А как Вы писали обработку событий подобных кнопок? Может и вправду у меня в бине метод глючит0
...
Рейтинг: 0 / 0
23.10.2006, 18:56:40
    #34075107
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
- JSF - Error getting property from bean
проект есть, но еще в разработке. поделиться не могу.

зайди на сайт myfaces - там в wiki очень много материала как и что настраивать.

это не событие кнопки. это action. событие - это actionListener, это несколько другое.

в сановской реализации была такая фигня: если на странице 2 формы, то нажатие на кнопку криво работает. именно поэтому я и пересел на myfaces.

добавь в метод onClick()

System.out.println("1");
System.out.println("2");

и потом смотри по логам, вызывается этот метод или нет.

и <h:messages/> не забудь вставить в create.jsp
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / - JSF - Error getting property from bean / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]