powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF, h:selectOneListbox и "Validation Error: Value is not valid"
6 сообщений из 6, страница 1 из 1
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
    #33123501
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при выборе значения в списке 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
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
    #33125618
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up!
...
Рейтинг: 0 / 0
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
    #33130414
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
    #33654123
_Дима_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавь к бину метод public boolean equals(Object o)
...
Рейтинг: 0 / 0
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
    #33663339
___Дима_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну чо, получилось?
...
Рейтинг: 0 / 0
JSF, h:selectOneListbox и "Validation Error: Value is not valid"
    #33664500
___Дима_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ггг, наверное получилось, больше полгода уже прошло )
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF, h:selectOneListbox и "Validation Error: Value is not valid"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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