Я пишу свою собственную реализацию консоли JMX для JBoss 6.1 на основе JSF.
Часть кода управляемого компонента:
@ManagedBean
@SessionScoped
public class InspectionBean implements Serializable {
private MBeanInfo data;
private List<OperationWrapper> operations;
public void setInitData(MBeanInfo data) {
this.data = data;
initOperations();
}
public List<MBeanOperation> getOperations() {
return operations;
}
public void setOperations(List<MBeanOperation> list) {
operations = list;
}
private void initOperations() {
operations = new ArrayList<MBeanOperation>();
for (MBeanOperationInfo opInfo : data.getOperations()) {
OperationWrapper opWrapper = new OperationWrapper();
opWrapper.setName(opInfo.getName());
opWrapper.setDescription(opInfo.getDescription());
opWrapper.setReturnType(opInfo.getReturnType());
List<ParameterWrapper> paramList =
new ArrayList<ParameterWrapper>();
for (MBeanParameterInfo paramInfo : opInfo.getSignature()) {
ParameterWrapper paramWrapper =
new ParameterWrapper();
paramWrapper.setName(paramInfo.getName());
paramWrapper.setDescription(paramInfo.getDescription());
paramWrapper.setType(paramInfo.getType());
paramWrapper.setValue("");
paramList.add(paramWrapper);
}
mBeanOp.setSignature(paramList);
operations.add(mBeanOp);
}
}
//some other code
}
Код класса OperationWrapper:
public class OperationWrapper implements Serializable {
private String name;
private String returnType;
private List<ParameterWrapper> signature;
private String description;
//other getters and setters
public List<ParameterWrapper> getSignature() {
return signature;
}
public void setSignature(List<ParameterWrapper> signature) {
this.signature = signature;
}
}
Код класса ParameterWrapper:
public class ParameterWrapper implements Serializable {
private String name;
private String type;
private String description;
private String value;
//simple getters and setters
}
А это код проблемной страницы:
<h:dataTable value="#{inspectionBean.operations}" var="operation"
border="1" width="100%" cellpadding="5"
style="border-style: solid; border-collapse: collapse;">
<h:column>
<f:facet name="header">Operation</f:facet>
#{operation.name}
</h:column>
<h:column>
<f:facet name="header">Return Value</f:facet>
#{operation.returnType}
</h:column>
<h:column>
<f:facet name="header">Description</f:facet>
#{operation.description}
</h:column>
<h:column>
<f:facet name="header">Parameters</f:facet>
<h:form>
<h:dataTable value="#{operation.signature}" var="param"
rendered="#{not empty operation.signature}"
border="1" width="100%"
style="border-style: solid; border-collapse: collapse;">
<h:column>
#{param.name}
</h:column>
<h:column>
#{param.type}
</h:column>
<h:column>
#{param.description}
</h:column>
<h:column>
<h:inputText value="#{param.value}" size="20"/>
</h:column>
</h:dataTable>
<a4j:commandButton value="Invoke"
action="#{inspectionBean.invokeOperation(operation)}"
render="@none"/>
</h:form>
</h:column>
</h:dataTable>
Когда отображается эта часть страницы, это выглядит так: То есть во вложенных таблицах данных нет текста!
Как видите, таблицы находятся там, где и должны.И есть ячейки для текста.И в нужном количестве.Но где текст?
Отладка не дает результата.Списки заполнены правильными данными.
Что не так?Как я могу это исправить?