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;

        }
}
Другие вопросы по тегам