если я хочу связать атрибут значения a h:selectmanycheckbox
к карте с ri jsf 2.0.3 я сделал бы что-то как следующее
боб:
private Map<String, String[]> values = new HashMap<String, String[]>();
public Map<String, String[]> getValues() {
return values;
}
public void setValues(Map<String, String[]> values) {
this.values = values;
}
и xhtml страница:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<h:selectManyCheckbox
id="test"
value="#{testController.values['foo']}">
<f:selectItem itemLabel="1" itemValue="1_1" />
<f:selectItem itemLabel="2" itemValue="1_2" />
<f:selectItem itemLabel="3" itemValue="1_3" />
<f:selectItem itemLabel="4" itemValue="1_4" />
</h:selectManyCheckbox>
<h:commandButton value="Send" />
</h:form>
</h:body>
Это хорошо работает, но в моем приложении мне нужно больше управления местоположением каждого флажка, таким образом, я заменил стандарт <h:selectManyCheckbox>
теги с их icefaces-эквивалентом <ice:selectManyCheckbox>
и <ice:checkbox>
.
Боб остается таким же, и xhtml-страница теперь похожа на это:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ice="http://www.icesoft.com/icefaces/component"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<ice:selectManyCheckbox
id="test"
layout="spread"
value="#{testController.values['foo']}">
<f:selectItem itemLabel="1" itemValue="1_1" />
<f:selectItem itemLabel="2" itemValue="1_2" />
<f:selectItem itemLabel="3" itemValue="1_3" />
<f:selectItem itemLabel="4" itemValue="1_4" />
</ice:selectManyCheckbox>
<table border="1">
<tr>
<td><ice:checkbox id="c1" for="test" index="0" /></td>
<td><ice:checkbox id="c2" for="test" index="1" /></td>
</tr>
<tr>
<td><ice:checkbox id="c3" for="test" index="2" /></td>
<td><ice:checkbox id="c4" for="test" index="3" /></td>
</tr>
</table>
<h:commandButton value="Senden" />
</h:form>
</h:body>
Теперь каждый раз, когда я отправляю форму, я получаю ошибку преобразования, и я не могу выяснить почему.
Если я связываю <ice:selectManyCheckbox>
атрибут значения к простому stringarray, который это разветвляет прекрасный, но потому что я не знаю, сколькими там будут группы флажков, мне нужен он для работы с картой.
Я использую icefaces 2.0.0 беты 1 вместе с солнцем ri 2.0.3 и el 2.2 на коте 6.0.26.
Кто-либо знает решение моей проблемы?
Вы можете попытаться разместить столько фиктивных мапелемтов, сколько вам нужно для "инициализации" вашей карты.