里面一个
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
Run Code Online (Sandbox Code Playgroud)
我想要使用会话
FacesContext.getCurrentInstance().getExternalContext().getSession(false);
Run Code Online (Sandbox Code Playgroud)
但我意识到FacesContext.getCurrentInstance()回报null.我知道我可以使用会话((HttpServletRequest) req).getSession(false)代替,但我的具体问题是:为什么是faces上下文null的doFilter()方法是什么?
我正在使用MyFaces 1.1.
我在Kotlin尝试内部课程并遇到了这个错误,但并不太明白.我试着看一下这里的文档,但是对外层类如何访问内部类构造函数没有任何指导
class OuterClass {
fun someFun(): InnerClassSuper {
return InnerClassX("Hello") //Error: Constructor of inner class InnerClassX can be called only with receiver of containing class
}
sealed class InnerClassSuper {
inner class InnerClassX(val x: String): InnerClassSuper()
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人解释错误并指示如何解决错误,将不胜感激.谢谢.
我试图从这个视频的第一个例子中学习高阶函数.这是我的代码和输出.
码
fun lowercase(value: String) = value.toLowerCase()
fun higherOrder(value:String, op: (String) -> String) : String {
println("Executing higher order fun $op")
return op(value)
}
fun main(args: Array<String>) {
println(higherOrder("HELLO", ::lowercase))
println(higherOrder("hello", {it -> lowercase(it)}))
println(higherOrder("HeLlo", { x -> lowercase(x) }))
println(higherOrder("Hello", { lowercase(it) }))
}
Run Code Online (Sandbox Code Playgroud)
产量
Executing higher order fun function lowercase (Kotlin reflection is not available)
hello
Executing higher order fun Function1<java.lang.String, java.lang.String>
hello
Executing higher order fun Function1<java.lang.String, java.lang.String>
hello
Executing higher order fun Function1<java.lang.String, java.lang.String> …Run Code Online (Sandbox Code Playgroud) 我正在使用Firestore 参考数据类型来存储对用户的引用,如下面的屏幕截图所示
用户参考
用户集合
当我尝试查询这些数据时,我得到了一个ClassCastException(我String为了它而试图转换为一个).
码
//.. this function reads data from DocumentSnapshot
//.. and converts to an Organization
private fun DocumentSnapshot.toOrganization(): Organization {
//.. some code
(this.data["members"] as ArrayList<HashMap<String, Any>>).map { toOrgMember(it) })
//.. more code
}
fun toOrgMember(map: Map<String, Any>): OrgMember {
//map["user"] as String throws ClassCastException. Refer first screenshot
return OrgMember(map["id"] as Long, UserRef(map["user"] as String), map["type"] as String,
asJobTitlesList(map["jobTitles"] as String))
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪
10-14 20:31:17.503 15569-15569/com.a.b W/System.err: Caused by: java.lang.ClassCastException: com.google.android.gms.internal.zzegf …Run Code Online (Sandbox Code Playgroud) 我观察到观察者的MutableLiveData触发器onChanged,即使为其setValue方法提供了相同的对象实例也是如此。
//Fragment#onCreateView - scenario1
val newValue = "newValue"
mutableLiveData.setValue(newValue) //triggers observer
mutableLiveData.setValue(newValue) //triggers observer
//Fragment#onCreateView - scenario2
val newValue = "newValue"
mutableLiveData.postValue(newValue) //triggers observer
mutableLiveData.postValue(newValue) //does not trigger observer
Run Code Online (Sandbox Code Playgroud)
如果向setValue()/ 提供了相同或等效的实例,是否有办法避免两次通知观察者postValue()
我尝试扩展,MutableLiveData但是没有用。我可能在这里错过了一些东西
class DistinctLiveData<T> : MutableLiveData<T>() {
private var cached: T? = null
@Synchronized override fun setValue(value: T) {
if(value != cached) {
cached = value
super.setValue(value)
}
}
@Synchronized override fun postValue(value: T) {
if(value != cached) { …Run Code Online (Sandbox Code Playgroud)