简短的问题:
使用使用页面大小加载新页面和BoundaryCallback类的API,从Architecture组件处理Paging库上的数据库+网络的正确方法是什么?
研究和解释
目前,BoundaryCallback在用于体系结构组件的分页库中使用的类接收列表中元素的实例作为参数,而没有该元素所在的实际上下文.它发生在onItemAtFrontLoaded和onItemAtEndLoaded.
我的Api应该接收页面和页面大小以加载下一个数据块.作为分页列表构建器的一部分添加的边界回调应该告诉您何时根据预取距离和页面大小加载下一页数据.
由于API需要的页码和页面提供的尺寸,我看不到的方式发送到API只是通过接收从列表中提供的元素之一onItemAtFrontLoaded和onItemAtEndLoaded.检查此链接中的google示例,他们使用最后一个元素的名称来获取下一个元素,但这不适合具有页面+大小的Api.
他们还有另一个只使用网络的例子PagedKeyedDatasource,但没有关于如何将它与数据库和BoundaryCallback混合的样本或线索.
编辑:到目前为止我找到的解决方案只是将最后加载的页面存储在共享首选项上,但这听起来像是一个肮脏的技巧.
有关官方输入,请参阅 https://github.com/googlesamples/android-architecture-components/issues/252#issuecomment-392119468.
android android-room android-livedata android-architecture-components android-paging
我是Spring框架的新手.我正在为我的webapp创建一个登录页面,我希望用户在应用程序上的任何操作之前登录.如果用户输入了良好的凭据,那么一切正常并且正常工作,但是如果输入了坏的,我想显示一条消息,并在输入元素上保留用户名.显示消息不是问题,但是我不能在不使用已弃用的变量SPRING_SECURITY_LAST_USERNAME的情况下将用户名保留在我的jps文件中.
希望有人可以帮助我,我正在使用Spring 3.
更新:要求说我不想在网址上显示用户名.
当我在构造函数上初始化一个名为ManageRenderListenerCommand的类时,我在C++(MVS 2010)上遇到了一个额外的行为.这是作为Command设计模式实现的,其中ManageRenderListenerCommand命令是具体命令之一.
我称之为ManageRenderListenerCommand的地方
void Mediator::change(Negotiator* negotiator, NegotiatorEvent& negotiatorEvent){
ICommand* command = NULL;
if(negotiatorEvent.matchEvent("addToViewport")){
command = static_cast<ICommand*> (&AddToViewportCommand(mCameraManager, mSceneCreator, mEngine));
}else if (negotiatorEvent.matchEvent("manageRenderListener")){
command = static_cast<ICommand*> (&ManageRenderListenerCommand(mObserverRegistry, mEngine, negotiatorEvent.getMessage()));
}
//Execute the created command
if (command) command->execute();
}
Run Code Online (Sandbox Code Playgroud)
正如您在代码中看到的那样,ManageRenderListener接收一个字符串,在这种情况下,该字符串包含NegotiatorEvent类(negotiatorEvent.getMessage())中包含的单词add .
问题是,在构造函数上,我将字符串放在私有成员上,但调试后我可以看到它并在转换后将其删除并重新初始化为"".我试过static_cast,dynamic_cast.为了提供线索,我认为这是一个可见性问题,但我不知道如何管理它.
}else if (negotiatorEvent.matchEvent("manageRenderListener")){
//Here mMessage = ""
command = static_cast<ICommand*> (&ManageRenderListenerCommand(mObserverRegistry, mEngine, negotiatorEvent.getMessage()));
//Here mMessage is again "" instead of add
}
Run Code Online (Sandbox Code Playgroud)
ManageRenderListener.cpp
#include "ManageRenderListenerCommand.h"
ManageRenderListenerCommand::ManageRenderListenerCommand(
OgreRenderObserverRegistry* observerRegistry,
OgreEngine* engine,
string message):
mObserverRegistry(observerRegistry),
mEngine(engine),
mMessage(message){
}
void ManageRenderListenerCommand::execute(){ …Run Code Online (Sandbox Code Playgroud) 我在Spring MVC 3上有一个包含两种不同形式(有两个不同的提交)的页面,我遇到了@ModelAttribute方法的问题.当我在同一个控制器上有两个时,它们并不总是被执行,使模型为NULL.
代码:
@Controller
@RequestMapping(value = "/session/admin/permission/{userId}")
public class PermissionController {
@Autowired
private UserManager userManager;
@ModelAttribute("passwordValidation")
private PasswordValidation getPasswordModel(){
return new PasswordValidation();
}
@ModelAttribute("user")
private User getUserModel(@PathVariable("userId") String userId){
//This is not executed
return userManager.getUser(userId);
}
@ModelAttribute("permissionsAvailable")
private PermissionsAvailable getPermissionsModel(@ModelAttribute("user") User user) {
return new PermissionsAvailable();
}
@RequestMapping(method = RequestMethod.GET)
public String adminPermission(){
return "/security/permission";
}
@RequestMapping(method = RequestMethod.POST, params="changeRoles")
public String modifyPermission(@ModelAttribute("permissionsAvailable") PermissionsAvailable permissions,
HttpServletRequest request, @ModelAttribute("user") User user,
final RedirectAttributes redirectAttributes){
//Modify something
}
@RequestMapping(method = RequestMethod.POST, …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring来开发我的应用程序,使用Hibernate和JPA作为MySQL数据库中的持久性API.当我从数据库中获取大多数对象时,它们的属性使用数据库的值初始化,并且集合是Lazy加载的.问题就来了与所谓的实体Business,其被加载为JavassistLaziInitializer使用方法find()从EntityManager.
如果我执行get或set方法,他们使用代理并给我我需要的值,但是当我使用@Valid和验证注释时,因为实际值是NULL(列值,而不是集合),我有验证错误,如@NotNull.
我希望有人知道一个方法来获取填充了JavassistLazyInitializer代理值的列,或者一个方法来获取代理本身.
请注意,这个行为,因为我关注的不是hibernate的一个错误,因为它已被多次报告为bug,但开发人员建议这是在某些情况下发生的hibernate的正常行为.
spring ×3
android ×1
android-architecture-components ×1
android-room ×1
c++ ×1
constructor ×1
controller ×1
forms ×1
hibernate ×1
javassist ×1
jsp ×1
login ×1
model ×1
scope ×1
security ×1
string ×1
validation ×1