- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在没有 ADF BC 的情况下自定义 ADF Faces 中的错误处理?
这是我的方法。
MyErrorHandler 类扩展 DCErrorHandlerImpl
public class MyErrorHandler extends DCErrorHandlerImpl {
private static final ADFLogger logger = ADFLogger.createADFLogger(MyErrorHandler.class);
private static ResourceBundle rb =
ResourceBundle.getBundle("error.handling.messages.ErrorMessages_de_DE");
public MyErrorHandler() {
super(true);
}
public MyErrorHandler(boolean setToThrow) {
super(setToThrow);
}
public void reportException(DCBindingContainer bc, java.lang.Exception ex) {
disableAppendCodes(ex);
logger.info("entering reportException() method");
BindingContext ctx = bc.getBindingContext();
if (ex instanceof NullPointerException) {
logger.severe(ex);
JboException e = new JboException(rb.getString("STANDARD_ERROR_MESSAGE"));
super.reportException(bc, e);
} else if (ex instanceof RowValException) {
Object[] exceptions = ((RowValException) ex).getDetails();
if (exceptions != null) {
for (int i = 0; i < exceptions.length; i++) {
if (exceptions[i] instanceof RowValException) {
this.reportException(bc, (Exception) exceptions[i]);
} else if (exceptions[i] instanceof AttrValException) {
super.reportException(bc, (Exception) exceptions[i]);
}
}
} else {
this.reportException(bc, ex);
}
} else if (ex instanceof TxnValException) {
Object[] exceptions = ((TxnValException) ex).getDetails();
if (exceptions != null) {
for (int i = 0; i < exceptions.length; i++) {
if (exceptions[i] instanceof RowValException) {
this.reportException(bc, (Exception) exceptions[i]);
} else {
super.reportException(bc, (Exception) exceptions[i]);
}
}
} else {
super.reportException(bc, ex);
}
}
else if (ex instanceof oracle.jbo.DMLException) {
JboException e = new JboException(rb.getString("STANDARD_ERROR_MESSAGE"));
super.reportException(bc, e);
} else if (ex instanceof javax.xml.ws.WebServiceException) {
JboException e = new JboException(rb.getString("WEB_SERVICE_EXCEPTION"));
super.reportException(bc, e);
}
else if (ex instanceof JboException) {
super.reportException(bc, ex);
}
}
public static FacesMessage getMessageFromBundle(String key, FacesMessage.Severity severity) {
ResourceBundle bundle =
ResourceBundle.getBundle("sahaj.apps.vleadministration.view.resources.VLEAdministrationUIBundle");
String summary = JSFUtils.getStringSafely(bundle, key, null);
String detail = JSFUtils.getStringSafely(bundle, key + "_detail", summary);
FacesMessage message = new FacesMessage(summary, detail);
message.setSeverity(severity);
return message;
}
private void disableAppendCodes(Exception ex) {
if (ex instanceof JboException) {
JboException jboEx = (JboException) ex;
jboEx.setAppendCodes(false);
Object[] detailExceptions = jboEx.getDetails();
if ((detailExceptions != null) && (detailExceptions.length > 0)) {
for (int z = 0, numEx = detailExceptions.length; z < numEx; z++) {
System.err.println("Detailed Exception : "+ detailExceptions[z].toString());
disableAppendCodes((Exception) detailExceptions[z]);
}
}
}
}
@Override
protected boolean skipException(Exception ex) {
if (ex instanceof JboException) {
return false;
} else if (ex instanceof SQLIntegrityConstraintViolationException) {
return true;
}
return super.skipException(ex);
}
private String handleApplicationError(String errorMessageRaw) {
String errorMessageCode = getErrorCode(errorMessageRaw);
// application error code
String errorMessage = null;
for (String key : errorPrefixes) {
if (errorMessageCode.startsWith(key)) {
try {
errorMessage = rb.getString(errorMessageCode);
} catch (MissingResourceException mre) {
// application error code not found in the bundle,
// use original message
return errorMessageRaw;
}
break;
}
}
// return the formated application error message
return errorMessage;
}
private String getErrorCode(String errorMessageRaw) {
// check for null/empty error message
if (errorMessageRaw == null || errorMessageRaw.isEmpty()) {
return errorMessageRaw;
}
int start = 0;
String currentErrorCodePrefix = null;
int count = 0;
// check for error message
for (String errorCode : errorPrefixes) {
count += 1;
start = errorMessageRaw.indexOf(errorCode);
if (start >= 0) {
currentErrorCodePrefix = errorCode;
start += currentErrorCodePrefix.length();
break;
}
if (count == errorPrefixes.size())
return errorMessageRaw;
}
int endIndex = start + 5;
// get the CURRENT error code
return currentErrorCodePrefix + errorMessageRaw.substring(start, endIndex);
}
@Override
public String getDisplayMessage(BindingContext bindingContext, Exception exception) {
String data=super.getDisplayMessage(bindingContext, exception);
System.err.println("Exception DATA : "+ data);
String msg= handleApplicationError(data);
System.err.println("Exception MSG : "+ msg);
return msg;
}
@Override
public DCErrorMessage getDetailedDisplayMessage(BindingContext bindingContext, RegionBinding regionBinding,
Exception exception) {
return super.getDetailedDisplayMessage(bindingContext, regionBinding, exception);
}
private static Set<String> errorPrefixes = new HashSet<String>();
static {
errorPrefixes.add("JBO-");
errorPrefixes.add("ORA-");
errorPrefixes.add("DCA-");
}
}
<Application xmlns="http://xmlns.oracle.com/adfm/application" version="12.1.2.66.68" id="DataBindings"
SeparateXMLFiles="false" Package="de.nkk.oasis.ui.web" ClientType="Generic"
ErrorHandlerClass="MyErrorHandler">
/**
* method throwing a Nullpointer exception
*/
public void throwNPE() {
Object o = null;
String s = o.toString();
//bang occurs in the line above, no need for any more code
//...
}
/**
* Method that throws a single JboException
*/
public void throwJboException(){
throw new JboException("This is a JboException thrown in ADF BC");
}
<af:button actionListener="#{bindings.throwNPE.execute}" text="throwNPE"
disabled="#{!bindings.throwNPE.enabled}" id="b2"/>
<af:button actionListener="#{bindings.throwJboException.execute}" text="throwJboException"
disabled="#{!bindings.throwJboException.enabled}" id="b3"/>
最佳答案
尝试删除
disabled="#{!bindings.throwNPE.enabled}"
disabled="#{!bindings.throwJboException.enabled}"
关于java - ADF 面对 : It's possible to Customize Error Handling without ADF BC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18782270/
我是 ADFS 的新手。实际上我不知道什么是主动或被动联邦,也不知道它们之间的区别,有人可以帮助我吗? 提前致谢 !!!... 最佳答案 被动使用浏览器 - 进行重定向等。协议(protocol)是
我有一个引用 ADAL.net 库的 c# 控制台应用程序(Microsoft.IdentityModel.Clients.ActiveDirectory 版本 2.19.208020213) 控制台
ADF initContext 和 prepareModel 之间的区别,因为两者都通过执行业务服务来准备数据,并通过绑定(bind)容器(Map 对象)使其可用。 最佳答案 ADF initCont
我想从按钮 ActionListener 执行数据控制操作(CreateInsert 和 Delete)。我知道可以从 Data Controls 菜单中插入一个数据控制按钮,但是由于各种原因我需要这
我需要将现有管道的副本(管道数量:10-20)从一个订阅克隆到另一个订阅(另一个 ADF)。有没有办法使用 Azure DevOps 来完成此事件? 最佳答案 选项1: 使用Git Configura
在我的解决方案中,我有两个 Azure 数据工厂项目:PR1 和 PR2。 PR1 包含某些资源的定义 - “resource1”。在 PR2 中,我有管道定义,我想在其中引用此资源: "linked
我正在使用 inputFile 组件上传文件。当我完成上传文件时,输入文本字段将缩小 其大小并更改大小以调整文件名。有没有办法为输入文本字段设置固定大小? 部分代码如下: 最佳答案 例如,使用 Pa
我是 ORACLE ADF FUSION MIDDLEWARE 的新手,所以我在表单设计方面没有经验。谁能帮我对齐布局中的一些元素。 我想始终将 ORACLE Logo 对齐到右侧。如果窗口分辨率降低
我的页面上有一个 af:outputText。 它的值需要很长时间才能生成,所以我不想在最初创建页面时生成。 相反,我希望页面在加载后对服务器进行异步回调,然后返回值将填充 outputText。 在
在 oracle adf 中,当我们将一个表从 Data Controls 拖放到 jsf 页面时,当我们运行项目时,预选了一行表。我应该怎么做才能在第一次加载页面时没有选择任何行? 我使用 jdev
我在 Windows Server 2016 上使用 OpenID Connect 设置 ADFS 时遇到困难。 我已经设置了用于测试的 AD 并且我可以成功进行身份验证,但是电子邮件声明不在 id
ADF 管道和 ADF 数据流有什么区别?为什么管道和数据流中支持的接收器/源不同?是否可以创建一个管道来从源读取数据、过滤、使用连接并将数据存储到没有数据流的接收器?请告诉我。 最佳答案 管道用于流
我有一个具有三个值的 selectonechoice:A、B、C,但我在其更改事件中遇到以下错误: Could not find selected item matching value "B"
我有 ADF 应用程序,它是一个电影数据库。我在设置 ADF 组件 af:inputText 时遇到了一个大问题。 我尝试了很多不同组件的不同宽度设置,但我总是失败。 有图片... 请问您不知道该怎么
我试图显示(在控制台中打印)对应于 ADF-BC 的 SQL 查询。我不知道如何使用 Jdeveloper 11.1.1.1.0 和 Oracle 11g 执行此操作。我只是想看看在将它们发送到 Or
我有两台名为 auth.somedomain.no 的 ADFS 2.0 代理服务器和两台名为 adfs.somedomain.no 的 ADFS 2.0 服务器。 然而,https://auth.s
我正在尝试将新的 MVC 应用程序发布到 Azure 应用服务。该应用程序使用ADFS单点登录身份验证,我在ADFS服务器上添加了依赖方信任,并且在本地主机上测试时可以登录。 发布到我的应用程序服务并
有人成功做到这一点吗? SelfSTS是一个 WCF 应用程序而不是 ASP.NET 应用程序,并且似乎没有很多用于进行 WCF 集成的示例或代码示例? 这非常有用,因为 SelfSTS 允许您动态创
我试图将我的 Identityserver4 配置为使用 ADFS 4.0 作为外部提供程序。 我已将其配置如下: app.UseCookieAuthentication(ne
我需要使用“-Djbo.debugoutput=console”启动我的 adf 应用程序。 我该怎么做?我使用的是jdevloper 11.1.1.6 最佳答案 您需要做的就是将上述字符串作为 Ja
我是一名优秀的程序员,十分优秀!