powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / - JSF - Error getting property from bean
19 сообщений из 19, страница 1 из 1
- JSF - Error getting property from bean
    #34074175
fidel_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на 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
- JSF - Error getting property from bean
    #34074272
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
getFirstname
setFirstname

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

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

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

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

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

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

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

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

кстати, имя бина лучше писать с маленькой буквы: еmpBean
...
Рейтинг: 0 / 0
- JSF - Error getting property from bean
    #34074636
fidel_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему Вы советуете писать имя бина с маленькой буквы: е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
- JSF - Error getting property from bean
    #34074718
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<from-action>#{EmpBean.onClick}</from-action>

убери из facesconfig
...
Рейтинг: 0 / 0
- JSF - Error getting property from bean
    #34074734
fidel_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрал, но к сожалению не заработало... кстати вроде во многих туториалах <from-action> метод </from-action> пишется
...
Рейтинг: 0 / 0
- JSF - Error getting property from bean
    #34074750
fidel_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде и в 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
- JSF - Error getting property from bean
    #34074757
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убери binding со всех элементов
добавь на страницу <h:messages/>

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

<!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
- JSF - Error getting property from bean
    #34074865
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага
...
Рейтинг: 0 / 0
- JSF - Error getting property from bean
    #34074915
fidel_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже самое, опять create.jsp сама на себя ссылается

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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