pretty-config, выполните метод перед перенаправлением на просмотр - PullRequest
0 голосов
/ 03 июля 2019

int pretty-config.xml JSF

Мне нужно что-то сделать (вызвать метод bean), прежде чем перейти к просмотру, указанному в pretty-config ....

<url-mapping id="queryUser">
    <pattern value="/queryUser" />
    <view-id value="/path/to/queryUser.xhtml" />    
</url-mapping>

<url-mapping id="doRegisterTipProcess">
    <pattern value="/doRegisterTipProcess" />
    <view-id value="HOW_CALL_registerTipBean.redirectQueryUser()_METHOD_BEFORE_queryUser" />    
</url-mapping>

<url-mapping id="doRegisterCitProcess">
    <pattern value="/doRegisterCitProcess" />
    <view-id value="HOW_CALL_registerCitBean.redirectQueryUser()_METHOD_BEFORE_queryUser" />    
</url-mapping>

Теперь, когда вызывается метод redirectQueryUser, он указывает, кто является вызывающей стороной для возврата с selectedUser для выполнения какого-либо процесса.

@ManagedBean(name = "registerTipBean")
@ViewScoped
public Class RegisterTipBean{

    private String selectedUser;

    @PostConstruct
    public void init() {
        selectedUser = Faces.getFlashAttribute("selectedUser");
        if (selectedUser !=null) {
            System.out.println("RegisterTipBean.selectedUser:" + selectedUser);
        }
    }


    //Indicate where Return TIP
    public void redirectQueryUser() {
        try {
            Faces.setFlashAttribute("whoCall", "RegisterTipBean");
            FacesContext.getCurrentInstance().getExternalContext().redirect("queryUser");
        } catch (IOException e) {

        }
    }
}


@ManagedBean(name = "registerCitBean")
@ViewScoped
public Class RegisterCitBean{

    private String selectedUser;

    @PostConstruct
    public void init() {
        selectedUser = Faces.getFlashAttribute("selectedUser");
        if (selectedUser !=null) {
            System.out.println("RegisterCitBean.selectedUser:" + selectedUser);
        }
    }

    //Indicate where Return CIT
    public void redirectQueryUser() {
        try {
            Faces.setFlashAttribute("whoCall", "RegisterCitBean");
            FacesContext.getCurrentInstance().getExternalContext().redirect("queryUser");
        } catch (IOException e) {

        }
    }
}

Метод doProcess QueryUserBean «ищет» selectedUser и возвращает к компоненту Bean Caller.

@ManagedBean(name = "queryUserBean")
@ViewScoped
public class QueryUserBean {

    private String whoCall;
    private String selectedUser;

    @PostConstruct
    public void init() {
        whoCall = Faces.getFlashAttribute("whoCall");
    }



    public void doProcess() {
        selectedUser = selectedUser + "found!"
        if (Objects.equals(whoCall, "RegisterTipBean")) {
            Faces.setFlashAttribute("selectedUser", selectedUser);
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("registerTip");
            } catch (IOException e) {

            }
        }
        if (Objects.equals(whoCall, "RegisterCitBean")) {
            Faces.setFlashAttribute("selectedUser", selectedUser);
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("registerCit");
            } catch (IOException e) {

            }
        }
    }
}

Как выполняется метод перед переходом к представлению?

...