Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF, h:selectOneListbox и "Validation Error: Value is not valid" / 6 сообщений из 6, страница 1 из 1
19.06.2005, 13:33
    #33123501
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
при выборе значения в списке h:selectOneListbox страница перегружается и выдает "Validation Error: Value is not valid".

Элементами списка являются объекты типа ThreadDescription. Массив этих объектов берется с помощью вызова EsmeAgent.getThreads().
Если вместо ThreadDescription использовать Integer, то все работает. В книге core JavaServer™ Faces By DAVID GEARY, CAY HORSTMANN сказано что для пользовательских классов необходимо использовать конвертор String<-->Объект. Таким конвертором является Thread. Кто-нибудь сталкивался с таким? На форуме forum.java.sun.com проблему не решили.


Вот код:
Код: 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.
index.jsp

<%@ page contentType="text/html" language="java" %>
<html>
<%@ taglib uri="/jsf_core.tld" prefix="f" %>
<%@ taglib uri="/html_basic.tld" prefix="h" %>

<f:view>
<f:loadBundle basename="esme.jmx.jsf.messages" var="msgs"/>
<head>
  <title><h:outputText value="#{msgs.title}"/></title>
</head>

<body>

	<h:form>
		<h:panelGrid>
		<h:panelGroup>
			<h:selectOneListbox id="threads" value="#{threads.thread}">
				<f:selectItems value="#{threads.threads}" />
			</h:selectOneListbox>
			<h:message  for ="threads"/>
		</h:panelGroup>
		<h:commandButton value="Switch to" action="select" />
		</h:panelGrid>
   </h:form>
</body>
</f:view>

</html>
Код: 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.
Thread.java

 package  esme.jmx.jsf;

 import  esme.jmx.ThreadDescription;
 import  esme.jmx.EsmeAgent;

 import  javax.faces.convert.Converter;
 import  javax.faces.context.FacesContext;
 import  javax.faces.component.UIComponent;
 import  javax.faces.validator.Validator;
 import  javax.faces.validator.ValidatorException;
 import  javax.faces.model.SelectItem;
 import  java.util.ArrayList;


 public   class  Thread  implements  Converter, Validator {


	 public  SelectItem[] getThreads() {
		ArrayList res =  new  ArrayList();
		ThreadDescription[] t= EsmeAgent.getThreads();
		 for  ( int  i= 0 ; i<t.length; i++) res.add( new  SelectItem(t[i]));
		SelectItem[] threads =  null ;
		 if  (res.size()> 0 ) {
			threads =  new  SelectItem[res.size()];
			res.toArray(threads);
		}
		 return  threads;
	}


	 public  ThreadDescription getThread() {
		 return  thread;
	}

	 public   void  setThread(ThreadDescription thread) {
		 this .thread = thread;
	}

	 public   void  validate(FacesContext facesContext, UIComponent uiComponent, Object o)  throws  ValidatorException {
		System.out.println("validation: "+o+"("+((ThreadDescription)o).getThreadId()+")");
	}

	 public  Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String s) {
		 int  threadId = Integer.parseInt(s);
		ThreadDescription t = EsmeAgent.getThreads()[threadId];
		System.out.println("converted to object: "+t+"("+t.getThreadId()+")");
		 return  t;
	}

	 public  String getAsString(FacesContext facesContext, UIComponent uiComponent, Object o) {
		String res =  new  Integer(((ThreadDescription)o).getThreadId()).toString();
		System.out.println("converted to string: "+res);
		 return  res;
	}
	 private  ThreadDescription thread =  null ;


}

Код: 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.
faces-config.xml

<?xml version="1.0"?>
<!DOCTYPE faces-config  PUBLIC  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>

	<managed-bean>
		<managed-bean-name>threads</managed-bean-name>
		<managed-bean- class >esme.jmx.jsf.Thread</managed-bean- class >
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>

	<converter>
	   <converter- for - class >esme.jmx.ThreadDescription</converter- for - class >
	   <converter- class >esme.jmx.jsf.Thread</converter- class >
	</converter>

	<validator>
	   <validator-id>esme.jmx.ThreadDescription</validator-id>
	   <validator- class >esme.jmx.jsf.Thread</validator- class >
	</validator>

	<application>
		<locale-config>
			< default -locale>en</ default -locale>
		</locale-config>
	</application>

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

</faces-config>

ThreadDescription - это Bean с полями
Код: plaintext
1.
2.
3.
4.
 private   int  threadId;
 private  String operatorName;
 private  String password;
...
...
Рейтинг: 0 / 0
20.06.2005, 23:35
    #33125618
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
up!
...
Рейтинг: 0 / 0
23.06.2005, 10:05
    #33130414
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
up
...
Рейтинг: 0 / 0
09.04.2006, 03:42
    #33654123
_Дима_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
Добавь к бину метод public boolean equals(Object o)
...
Рейтинг: 0 / 0
13.04.2006, 10:06
    #33663339
___Дима_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
Ну чо, получилось?
...
Рейтинг: 0 / 0
13.04.2006, 14:24
    #33664500
___Дима_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
Ггг, наверное получилось, больше полгода уже прошло )
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF, h:selectOneListbox и "Validation Error: Value is not valid" / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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