JSF View- возвращает null для действий, не обновляет представление
Я прочитал пост, в котором есть та же проблема, что и у моего JSF ViewScope - возвращение нулевого значения для действий не обновляет представление, но оно не работает для меня, потому что я уже использую h: commandLink на другой странице, и она отлично работает, но на этой странице это не так.
это запрос боб
public class AddSectionBean {
public String delete(String id) {
try {
HttpSession session = SessionUtil.getSession();
UserVO userVOCreater = (UserVO) session.getAttribute("userVO");
SectionsDao.getInstance().deleteSectionById(
Integer.parseInt(id));
LoggerVO loggerVO =new LoggerVO();
loggerVO.setUserid(userVOCreater.getId());
loggerVO.setLog("deleted Section Id:"+id);
LoggerDao.getInstance().insertLogger(loggerVO);
} catch (Exception e) {
e.printStackTrace();
BundleMessages.getInstance().setMessage("error",
FacesMessage.SEVERITY_ERROR);
logger.error(e.getMessage(), e);
}
return null;
}
}
и ссылка находится внутри richtable для каждого столбца
<rich:column>
<h:commandLink id="actualDelete" styleClass="delete_#{sectionsBean.datatableSections.rowIndex}" action ="#{addSectionBean.delete(s.id)}" />
</rich:column>
Обратите внимание, что: я попытался вернуть результат вместо NULL, но когда я это сделаю, я потерял стиль и сценарии на странице, обратите внимание, что сценарии не действуют, потому что я проверил их с ними и получил тот же результат
1 ответ
Проблема решена путем перемещения метода удаления в компонент, который просматривает таблицу, и повторного вызова метода базы данных внутри функции удаления, чтобы перезагрузить таблицу даже при ее повторной загрузке в функции postConstruct
public class SectionsBean{
List<SectionVO> sectionsList = new ArrayList<SectionVO>();
@PostConstruct
public void postConstruct() {
try {
this.sectionsList = SectionsDao.getInstance().getSections();
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
}
}
public String delete(String id) {
try {
HttpSession session = SessionUtil.getSession();
UserVO userVOCreater = (UserVO) session.getAttribute("userVO");
SectionsDao.getInstance().deleteSectionById(
Integer.parseInt(id));
LoggerVO loggerVO =new LoggerVO();
loggerVO.setUserid(userVOCreater.getId());
loggerVO.setLog("deleted Section Id:"+id);
LoggerDao.getInstance().insertLogger(loggerVO);
//reload the database table
this.sectionsList = SectionsDao.getInstance().getSections();
} catch (Exception e) {
e.printStackTrace();
BundleMessages.getInstance().setMessage("error",
FacesMessage.SEVERITY_ERROR);
logger.error(e.getMessage(), e);
}
BundleMessages.getInstance().setMessage("success",
FacesMessage.SEVERITY_INFO);
System.out.println("calling delete id="+id);
return null;
}
}