@PostConstruct
public void initBean() {
AppModuleImpl mod = (AppModuleImpl)ADFUtils.getBindingApplicationModule();
DBTransaction conn = mod.getDBTransaction();
if (conn.isDirty()) conn.rollback();
...
import java.util.ArrayList;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import oracle.adf.controller.v2.lifecycle.PagePhaseEvent;
import oracle.adf.controller.v2.lifecycle.PagePhaseListener;
import oracle.adf.share.ADFContext;
import oracle.jbo.server.DBTransaction;
import *.ADFUtils;
import *.AppModuleImpl;
public class PageListenerBean implements PagePhaseListener{
// если conn.isDirty() и переходим на из url из списка, то rollback
private static String[] deniedUrls = {"/myapp/faces/task-flow-definition/tree"};
@Override
public void beforePhase(PagePhaseEvent pagePhaseEvent) {
try{
if (pagePhaseEvent.getPhaseId() == 9){
AppModuleImpl mod = (AppModuleImpl)ADFUtils.getBindingApplicationModule();
DBTransaction conn = mod.getDBTransaction();
if (isPageChanged()){
if (changedToDisallowed()){
if (conn.isDirty()){
conn.rollback();
System.out.println("= rolled back!");
}
}
}
}
}catch(Exception e){
;
}
}
@Override
public void afterPhase(PagePhaseEvent pagePhaseEvent) {
;
}
private void setApplicationScopeParameter(String val){
ADFContext adfCtx = ADFContext.getCurrent();
Map applicationScope = adfCtx.getApplicationScope();
applicationScope.put("currentURL", val);
}
private String getApplicationScopeParameter(){
ADFContext adfCtx = ADFContext.getCurrent();
Map applicationScope = adfCtx.getApplicationScope();
return (String)applicationScope.get("currentURL");
}
private boolean isPageChanged(){
try{
if (!getCurrentUrl().equals(getApplicationScopeParameter())){
setApplicationScopeParameter(getCurrentUrl());
return true;
}
}catch(NullPointerException e){
System.out.println("--! PageListenerBean: can't get current url");
}
return false;
}
private boolean changedToDisallowed(){
for(String url : this.deniedUrls)
if (url.equals(getCurrentUrl()))
return true;
return false;
}
private String getCurrentUrl(){
FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletRequest servletRequest = (HttpServletRequest) ctx.getExternalContext().getRequest();
return servletRequest.getRequestURI();
}
}