Я создал приложение, которое строит сетку или матрицу элементов динамически. Когда я пытаюсь перейти на другую страницу, я получаю сообщение об ошибке:
Это код:
private HtmlInputText createCelda(String vValue, String vStyle,
String vTitle, String vId, boolean vscript, boolean isreadonly) {
// private Application application;
// FacesContext fc = FacesContext.getCurrentInstance();
// application = fc.getApplication();
// private HtmlInputText ccelda;
ccelda = new HtmlInputText();
ccelda = (HtmlInputText) application
.createComponent(HtmlInputText.COMPONENT_TYPE);
ValueExpression ve = application.getExpressionFactory()
.createValueExpression(fc.getELContext(), vValue, String.class);
// ValueExpression ve = application.getExpressionFactory()
// .createValueExpression(fc.getELContext(), vValue, Integer.class);
ccelda.setValueExpression("value", ve);
ccelda.setStyleClass(vStyle);
ccelda.setTitle(vTitle);
ccelda.setId(vId);
ccelda.setReadonly(isreadonly);
if (vscript != false) {
ccelda.setOnkeydown(";return checkGrid(event, this.id);");
ccelda.setOnchange(";return changeValue(this.id);");
ccelda.setOnclick("this.select()");
}
return ccelda;
}
КОД для создания ряда ячеек с данными из компонента
public UIComponent createPanelPrincipal(int nx, int ny, UIComponent panel) {
panelCeldas = createPanel(nx, "nacionI");
for (int i = 1; i < nx + 1; i++) {
String snx = i > 9 ? String.valueOf(i) : "0" + String.valueOf(i);
ncelda = createCelda("#{myBean.totalI[" + (i - 1) + "]}",
celdaNacionIStyle, "I" + snx, "I" + snx, true, false);
panelCeldas.getChildren().add(ncelda);
}
panel.getChildren().add(panelCeldas);
return panel;
}
Этот код работает отлично в Tomcat 6.0.18
но в Tomcat 5.0 я получаю следующую ошибку:
10-nov-2010 14:56:24 com.sun.faces.lifecycle.RenderResponsePhase execute
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=form_composition:I15[severity=(ERROR 2), summary=(form_composition:I15: An error occurred when processing your submitted information.), detail=(form_composition:I15: An error occurred when processing your submitted information.)]
Строка, которая выдает ошибку:
ValueExpression ve = application.getExpressionFactory()
.createValueExpression(fc.getELContext(), vValue, String.class);
Если я поставлю только ccelda.setValue (myValue), он прекрасно работает, но мне нужно получить значение из bean-компонента, поэтому я использую ValueExpression.
Я не вижу способа отладить это. Если кому-то интересно, у меня есть отдельный проект, чтобы посмотреть, как он работает.