假设我的应用程序中有一个语言更改事件接口(它基于Vaadin):
public interface ILanguageChangeListener{
@Subscribe onLanguageChange(LanguageChangeEvent event);
}
Run Code Online (Sandbox Code Playgroud)
我有很多bean实现了这个用@Component注释的接口,因此它们可以在Spring IoC中使用.我还有一个EventBus bean:
<bean id="languageSwitcher" class="com.google.common.eventbus" scope="session" />
Run Code Online (Sandbox Code Playgroud)
现在,在从IoC获取任何bean的实例之后,我还必须得到一个languageSwitcher的实例,并在其中注册newely创建的bean:
languageSwitcher.register(myNewBean);
Run Code Online (Sandbox Code Playgroud)
为了接收这个事件.有可能以某种方式告诉IoC我想在每个实现ILanguageChangeListener的新bean上调用languageSwitcher bean的register方法吗?
很长一段时间以来,我一直在努力解决unit-test-android问题.我已经看到了这个,这个和那个,最后我找到了gradle-android-test-plugin甚至让它运行起来.我现在可以用gradlew test命令运行测试了.
但是,在IDE(Android Studio或IntelliJ 13)中编写这些测试是不太舒服的,因为它没有看到junit和Robolectric依赖项添加了testCompile依赖性.
有没有办法将这些依赖项添加到IDE类路径中,但仍然避免将它们打包到生产应用程序中(因此,compile不能使用AFAIU 依赖项)?
我在我的项目中使用jQuery UI并使用gulp构建它.我通过以下方式包含其样式:
<!-- build:css styles/vendor/jqueryui.css -->
<link rel="stylesheet" href="bower_components/jqueryui/themes/base/jquery.ui.all.css">
<!-- endbuild -->
Run Code Online (Sandbox Code Playgroud)
当我使用gulp-useref插件构建它时,它将更改为:
<link rel="stylesheet" href="styles/vendor/jqueryui.css"/>
Run Code Online (Sandbox Code Playgroud)
问题是styles/vendor/jqueryui.css看起来像这样的内容:
@import "jquery.ui.base.css";@import "jquery.ui.theme.css";
Run Code Online (Sandbox Code Playgroud)
这些导入显然在分发包中失败,因为没有jquery.ui.base.css和jquery.ui.theme.css文件.他们没有被转移到dist包bower_components/jqueryui/themes/base/.
如何在不指定所有jquery.*.css文件的情况下正确包含jQuery UI主题?
阅读Gerrit文档,它说:
[...] users should be really knowledgeable about git,
for instance knowing why tags never should be removed from a server
Run Code Online (Sandbox Code Playgroud)
它没有详细说明这一说法.我没有看到任何问题,我也找不到任何关于它的信息.
那么,为什么永远不会从服务器中删除标签?
我的 Mongo 数据库中有以下文档(跳过 _ids):
> db.names.find({})
{ "name": "John" }
{ "name": "Jack" }
{ "name": "Johny" }
{ "name": "Jenny" }
Run Code Online (Sandbox Code Playgroud)
我已经为此集合创建了 Spring 数据存储库:
public interface NameRepository extends MongoRepository<Name, ObjectId> {
Collection<Name> findByNameLike(String name);
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
nameRepository.findByNameLike("John"); // John, Johny
nameRepository.findByNameLike("John$"); // John
nameRepository.findByNameLike("J*ny"); // Johny, Jenny
nameRepository.findByNameLike("Jo?*ny"); // Johny, Jenny
nameRepository.findByNameLike("Jo[]]?*ny"); // empty, without error
Run Code Online (Sandbox Code Playgroud)
所以它的行为就像一个智能正则表达式。现在我想自己实现这样的行为:
class MyNameRepository {
MongoOperations mongoOperations; // injected
public Collection<Name> findByName(String like) {
Query query = new Query();
query.addCriteria(Criteria.where("name").regex(like));
return mongoOperations.find(query, Name.class)
} …Run Code Online (Sandbox Code Playgroud) 我的系统中有一个用户实体,以下路由从服务器获取它并显示其详细信息:
routerConfiguration.map([
// ...
{route: 'user/:id', name: 'user-details', moduleId: './user-details'}
]);
Run Code Online (Sandbox Code Playgroud)
现在我想为所显示的用户显示一个编辑表单。我有以下要求:
第一次尝试
我尝试将编辑表单定义为单独的页面:
routerConfiguration.map([
// ...
{route: 'user/:id/edit', name: 'user-edit', moduleId: './user-edit'}
]);
Run Code Online (Sandbox Code Playgroud)
这通过了 #1 和 #3 要求,但在打开编辑表单时必须再次加载用户。
我不知道有什么方法可以在路线之间走私一些自定义数据。如果我可以将预加载的用户实例传递到编辑路由,并且编辑组件将使用它,或者在未给出的情况下加载一个新实例(例如,用户直接访问 URL),那就完美了。我只找到了如何以一种稍微有点hacky的方式将字符串传递给路由。
第二次尝试
我决定在模态中显示编辑表单,并在有?action=editGET 参数时自动显示。受此问题和此问题启发的代码:
export class UserDetails {
// constructor
activate(params, routeConfig) {
this.user = /* fetch user */;
this.editModalVisible = params.action == 'edit';
}
}
Run Code Online (Sandbox Code Playgroud)
当用户单击该Edit按钮时,将执行以下代码: …
一次最多可添加1048576个元素.
我试图找到限制来自的任何信息,但找不到任何信息.唯一与此有关的问题是关于PDO:#1,#2,解决方案是扩大缓冲区的大小.但是没有PDO array_pad.
绝对可以创建一个包含更多元素的数组:
$array = range(1, 1048576 + 10);
echo count($array); // prints 1048586
Run Code Online (Sandbox Code Playgroud)
事实上,有一个硬编码检查不超过这个值的array_pad来源.
但为什么?
根据找到用户位置的示例应用程序,监听活动中的位置更改是个好主意:
class MyActivity extends Activity implements LocationListener {
@Inject
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
// do something with location
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是,我不确定.当配置发生更改时,我的活动将被销毁并重新创建,下次将自己注册为侦听器.对旧活动的引用是在LocationManager中进行的,不是吗?
如果我提取LocationListener到单独的对象,我仍然有如何通知当前活动有关新位置的问题(不一定与请求活动相同).
有没有什么共同的模式来解决这个问题?
我有一个应用程序初始值设定项类,用于将应用程序特定数据插入数据库。
@Component("applicationInitializer")
public class ApplicationInitializer {
@PostConstruct
public void init(){
// some clever code here
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个DevApplicationInitializer类用于使用开发人员计算机上的一些示例数据初始化数据库(部署生产代码时不包括此类)。
@Component("applicationInitializer")
@Primary
public class DevApplicationInitializer extends ApplicationInitializer {
@PostConstruct
@Override
public void init(){
super.init();
// even more clever code here
}
}
Run Code Online (Sandbox Code Playgroud)
直到我给bean命名(只有@Component注释) - 一切都工作正常 - 当DevApplicationInitializer可用时,它被实例化而不是ApplicationInitializer. 当我给它们命名时applicationInitializer,抛出异常:
org.springframework.context.annotation.ConflictingBeanDefinitionException:
Annotation-specified bean name 'applicationInitializer' for bean class
[com.example.DevApplicationInitializer] conflicts with existing, non-compatible
bean definition of same name and class [com.example.ApplicationInitializer]
Run Code Online (Sandbox Code Playgroud)
当bean有名称时,为什么@Primary不尊重注释?我需要他们有一个,因为我确保在其他地方初始化程序已使用 …
我正在使用日期过滤器在我的角度应用程序中格式化我的日期.
在Firefox中,我得到的日期值为
未定义的NaN,NaN NaN:NaN:NaN PM
在Chrome中它的效果非常好
2014年6月25日上午7:22:47
我的代码如下.
var formatDate = new Date(info.list[i].date);
var newDate=$filter('date')(formatDate, 'medium');
Run Code Online (Sandbox Code Playgroud)
如何让它在Firefox中运行?