У меня есть страница, где отображается SelectOneMenu, есть ли какая-либо информация о БД или нет.
Моя форма выглядит так:
...
<h:form id="wrapperUpload" enctype="multipart/form-data" >
<h:outputLabel for="option" value="Tipo de carga: "
rendered="#{uploadFile.check(userVerifier.dependencia)}" />
<h:selectOneMenu id="option"
value="#{uploadFile.optionSelected}"
rendered="#{uploadFile.check(userVerifier.dependencia)}" >
<f:selectItems value="#{uploadFile.options}" />
</h:selectOneMenu>
<h:outputLabel for="upfile" value="Archivo: " />
<t:inputFileUpload id="upfile" required="true"
value="#{uploadFile.upFile}" />
<h:commandButton value="Validar #{userVerifier.dependencia}"
action="#{uploadFile.upload}"
onclick="return confirmation()" >
<f:param name="dependencia" value="#{userVerifier.dependencia}" />
</h:commandButton>
</h:form>
...
И моя фасоль
private UploadedFile upFile;
private boolean showOptions = false;
private final String[] options = {
"Seleccione una opción.",
"Cargar toda la información.",
"Cargar solo información errónea."
};
private String optionSelected;
private Database db = new Database();
public UploadedFile getUpFile() {
return upFile;
}
public void setUpFile(UploadedFile upFile) {
this.upFile = upFile;
}
public String[] getOptions() {
return options;
}
public void setOptionSelected(String optionSelected) {
this.optionSelected = optionSelected;
}
public String getOptionSelected() {
return optionSelected;
}
public boolean check(String dependencia) {
String hasInfo;
hasInfo = db.checkForInfo(dependencia);
if (hasInfo.equals("T")) {
showOptions = true;
} else {
showOptions = false;
}
return showOptions;
}
public String upload() {
byte[] buffer = null;
int count = 0;
File serverFile = null;
InputStream input = null;
OutputStream output = null;
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String dependencia = params.get("dependencia");
String extension = FilenameUtils.getExtension(upFile.getName());
System.out.println("__depend: " + dependencia);
System.out.println("__option: " + optionSelected); //null
...
...
Наконец, когда я нажимаю кнопку, значение SelectOneMenu (или selectedOption в моем бине) всегда равно нулю ...
Как это исправить? Я что-то упустил?
Забыл упомянуть, что, если я удаляю часть рендера, все работает нормально ...