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) {
}
}
}
}
Как выполняется метод перед переходом к представлению?