来自Weld CDI文档:
会话上下文自动传播任何JSF面部请求(JSF表单提交)或重定向.它不会自动传播非面部请求,例如,通过链接导航.
我想知道,跨越JSF的上下文传播是否也要求进行瞬态对话?更一般地说,是否存在关于瞬态和长期对话之间传播的差异的概述?
假设第一个问题的答案为"是",您是否可以提供需要长时间对话的用例?
我有以下代码:
class A
{
};
class B: public virtual A
{
public:
B()
{
cerr << "B()";
}
B(const A& a)
{
cerr << "B(const A&)";
}
};
class C: public B
{
};
int main(int argc, char **argv)
{
B *b = new B(C());
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,B(const A&a)没有被调用.这是为什么?
我试图从另一个方法的本机实现中调用私有方法,如下所示:
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID output_mid = (*env)->GetMethodID(env, cls, "methodName", "(Ljava/lang/String;)V");
if (output_mid == 0)
{
// Exit
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个“找不到方法”的异常。据我所知,类对象必须与定义目标方法的类相对应,因为它是私有的。
事实上,如果我将访问修饰符更改为 protected,错误就会消失。另外从日志中,我看到 GetObjectClass 返回了运行时类,而不是基类。所以,我的问题是:如何在 JNI 中获取正确的基类?
我有这样的转换:
Class1 *p1;
Class2 *p2 = new Class2();
p1 = (Class1 *) p2;
Run Code Online (Sandbox Code Playgroud)
我可以覆盖上面的类型转换操作符以返回自定义的Class1对象指针吗?如果有,怎么样?
编辑:我的确切问题是我有这样的代码:
if (*$1 == ArrayType(AnyType()))
{
$$ = ((ArrayType *) $1)->getElementsType();
}
Run Code Online (Sandbox Code Playgroud)
运算符==超载,因此$ 1可能是AnyType*类型.
我正在使用RichFaces 4.我的问题是该消息根本没有出现.如果我使用rich:message,则消息会短暂显示然后消失.
这是控制器:
public void uploadListener(final FileUploadEvent event) throws IOException
{
final UploadedFile item = event.getUploadedFile();
final FacesContext context = FacesContext.getCurrentInstance();
final Application application = context.getApplication();
final String messageBundleName = application.getMessageBundle();
final Locale locale = context.getViewRoot().getLocale();
final ResourceBundle resourceBundle = ResourceBundle.getBundle(messageBundleName, locale);
final String msg = resourceBundle.getString("upload.failed");
final String detailMsgPattern = resourceBundle.getString("upload.failed_detail");
try
{
CSVImporter.doImport(item.getInputStream(), registry, item.getName());
}
catch (ParseException e)
{
final Object[] params = {item.getName(), e.getMessage()};
final String detailMsg = MessageFormat.format(detailMsgPattern, params);
final FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, …Run Code Online (Sandbox Code Playgroud)