小编jgm*_*jgm的帖子

在AngularJS中使用具有指令的过滤器

我试图在AngularJS指令中使用过滤器,但不确定如何做到这一点.从邮件列表上的一些信息看来,您应该能够注入$ filter并使用它,但我不确定如何/在何处调用它.

我的指令目前看起来像这样:

myApp.directive('fancyDisplay', ['$filter', function($filter) {
    return {
        scope: {
            'fancyDisplay': '='
        },
        template: "<div ng-repeat='datum in fancyDisplay | filter:tagFilter'>{{datum.name}}</div>"
    };
}]);
Run Code Online (Sandbox Code Playgroud)

虽然filter:tagFilter不起作用.我该如何过滤指令中的数据?

JSfiddle可在http://jsfiddle.net/VDLqa/4/获得, 并提前感谢任何回复.

angularjs angularjs-directive

6
推荐指数
1
解决办法
3万
查看次数

番石榴比较链接列表?

我正在尝试使用ComparisonChain在类中实现compareTo()但是该类包含List而compare()不接受它们,因为List没有实现Comparable.关于如何使这项工作的任何想法?

代码子集看起来像这样:

public class User() {
  String name;
  List<String> emails;

  ...

  public int compareTo(User that) {
    return ComparisonChain().start()
                            .compare(this.name, that.name)
                            .compare(this.emails, that.emails)  // Fails on this line
                            .result();
  }
}
Run Code Online (Sandbox Code Playgroud)

java guava

5
推荐指数
1
解决办法
2270
查看次数

清理番石榴方式来处理可能为空的集合

我有一个方法,它接受一个Collection<Foo> foos可能为NULL 的参数.我希望最终得到一个输入的本地副本作为ImmutableSet.现在我的代码看起来像这样:

if (foos == null)
{
  this.foos = ImmutableSet.of();
}
else
{
  this.foos = ImmutableSet.copyOf(foos);
}
Run Code Online (Sandbox Code Playgroud)

有更清洁的方法吗?如果foos是一个简单的参数我可以做类似的事情,Objects.firstNonNull(foos, Optional.of())但我不确定是否有类似处理集合的东西.

java guava

5
推荐指数
2
解决办法
355
查看次数

从Superclass继承@JsonCreator注释

我有一些在超类中具有一组共享属性的对象:

public Superclass {
    int id;
    String name;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我有从超类继承的子类,但每个子类都需要自己完整描述的@JsonCreator

public Subclass1 extends Superclass {
    String color;

    @JsonCreator
    public Subclass1(@JsonProperty("id") int id,
                     @JsonProperty("name") String name,
                     @JsonProperty("color") String color)
    {
        super(id, name);
        this.color = color;
    }
}

public Subclass2 extends Superclass {
    int height;

    @JsonCreator
    public Subclass1(@JsonProperty("id") int id,
                     @JsonProperty("name") String name,
                     @JsonProperty("height") int height)
    {
        super(id, name);
        this.height = height;
    }
}
Run Code Online (Sandbox Code Playgroud)

杰克逊(2.x)有没有办法从超类中提取有关预期JSON字段的信息并避免这种重复?

java jackson

5
推荐指数
1
解决办法
1326
查看次数

将新创建的对象添加到Restangular集合

我正在使用带有AngularJS应用程序的Restangular并从一个简单的CRUD应用程序开始.我遇到的问题是了解如何将新项目添加到预先存在的集合中.

在控制器内,预先存在的集合在服务中获得并在范围内可用:

$scope.data.items = Restangular.all('items');
Run Code Online (Sandbox Code Playgroud)

通过表单创建一个新项目并在服务器上创建:

$scope.data.items.post(newitem);
Run Code Online (Sandbox Code Playgroud)

我想将这个新项目添加到预先存在的集合中但不确定如何.该restangular样品只是调用Restangular.all('items')一次,因为所有的信息存在,这似乎非常浪费.理想情况下,我想做这样的事情:

$scope.data.items.post(newitem).then(function(response) {
  $scope.data.items.push(newitem);
});
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我应该如何添加到集合中,而不是每次创建新项目时都重新获取整个集合?

angularjs restangular

5
推荐指数
1
解决办法
2102
查看次数

如何更改杰克逊的默认具体地图类型?

我有一个非常简单的Jackson代码来反序列化嵌套的JSON对象:

public class MapTest
{
  public static void main(String ... args) throws Exception
  {
    final String ser = "{\"nested\":{\"k1\":\"v1\",\"k2\":\"v2\",\"k3\":\"v3\"}}";
    final Map<String, Object> deser = new ObjectMapper().readValue(ser, new TypeReference<TreeMap<String, Object>>(){});
    System.out.println("Class of deser's nested object is " + deser.get("nested").getClass().getSimpleName());
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我获得以下输出:

Class of deser's nested object is LinkedHashMap
Run Code Online (Sandbox Code Playgroud)

但是我想将嵌套映射反序列化为输出TreeMap而不是LinkedHashMap输出.我如何告诉杰克逊TreeMap在反序列化时默认使用?

通过文档阅读我发现的最接近的事情是能够通过addAbstractTypeMapping()模块为抽象类型定义具体类,但我尝试了每个超类和实例LinkedHashMap尝试这样做,似乎没有任何工作.

这是使用Jackson 2.4.2,虽然如果有一种方法可以做到这一点,需要更高的版本,我将能够升级.

java jackson

5
推荐指数
1
解决办法
1393
查看次数

来自google-services.json的AndroidManifest.xml中的Google Maps键

我有一个google-services.json包含API密钥的文件,其中包括谷歌地图服务.Google地图需要以下信息AndroidManifest.xml:

<meta-data
  android:name="com.google.android.geo.API_KEY"
  android:value="KEY_GOES_HERE" />
Run Code Online (Sandbox Code Playgroud)

我可以使用Java访问Java中的信息R.string.google_api_key,因为构建过程会根据https://developers.google.com/android/guides/google-services-plugin将JSON文件转换为资源,但有没有办法可以参考清单文件中的密钥?

java android google-maps android-manifest google-play-services

5
推荐指数
1
解决办法
1897
查看次数

NullPointer使用Espresso时出现异常

我正在尝试使用Espresso.但我得到了这个错误,如果我错过了一些代码,我就没有.

任何想法都将受到高度赞赏.

错误日志:

java.lang.NullPointerException: No instrumentation registered. Must run under a registering instrumentation.
    at com.google.android.apps.common.testing.testrunner.util.Checks.checkNotNull(Checks.java:28)
    at com.google.android.apps.common.testing.testrunner.InstrumentationRegistry.getInstance(InstrumentationRegistry.java:23)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule.provideTargetContext(BaseLayerModule.java:50)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule$$ModuleAdapter$ProvideTargetContextProvidesAdapter.get(BaseLayerModule$$ModuleAdapter.java:101)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule$$ModuleAdapter$ProvideTargetContextProvidesAdapter.get(BaseLayerModule$$ModuleAdapter.java:85)
    at com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler$$InjectAdapter.get(DefaultFailureHandler$$InjectAdapter.java:53)
    at com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler$$InjectAdapter.get(DefaultFailureHandler$$InjectAdapter.java:20)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule$$ModuleAdapter$ProvideFailureHanderProvidesAdapter.get(BaseLayerModule$$ModuleAdapter.java:555)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule$$ModuleAdapter$ProvideFailureHanderProvidesAdapter.get(BaseLayerModule$$ModuleAdapter.java:519)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule$FailureHandlerHolder$$InjectAdapter.get(BaseLayerModule$FailureHandlerHolder$$InjectAdapter.java:53)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule$FailureHandlerHolder$$InjectAdapter.get(BaseLayerModule$FailureHandlerHolder$$InjectAdapter.java:20)
    at dagger.internal.Linker$SingletonBinding.get(Linker.java:327)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule$$ModuleAdapter$ProvideFailureHandlerProvidesAdapter.get(BaseLayerModule$$ModuleAdapter.java:505)
    at com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule$$ModuleAdapter$ProvideFailureHandlerProvidesAdapter.get(BaseLayerModule$$ModuleAdapter.java:469)
    at com.google.android.apps.common.testing.ui.espresso.ViewInteraction$$InjectAdapter.get(ViewInteraction$$InjectAdapter.java:65)
    at com.google.android.apps.common.testing.ui.espresso.ViewInteraction$$InjectAdapter.get(ViewInteraction$$InjectAdapter.java:20)
    at dagger.ObjectGraph$DaggerObjectGraph.get(ObjectGraph.java:251)
    at com.google.android.apps.common.testing.ui.espresso.Espresso.onView(Espresso.java:58)
    at com.example.espresso.TestExample.testCommand(TestExample.java:28)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
    at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
    at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
    at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
    at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1590)
Run Code Online (Sandbox Code Playgroud)

TestExample.java

public class TestExample extends ActivityInstrumentationTestCase2<ClickActivity>{

    public TestExample() {
        super(ClickActivity.class);
        // TODO …
Run Code Online (Sandbox Code Playgroud)

android android-espresso

4
推荐指数
1
解决办法
6812
查看次数

使用queue.js将HTTP标头添加到d3.json

我知道我可以通过执行以下操作向D3 JSON请求添加标头:

d3.json("http://localhost:8080/data")
  .header("Application-ID", "1")
Run Code Online (Sandbox Code Playgroud)

但是在使用队列延迟时如何添加此标头?

queue()
  .defer(d3.json, "http://localhost:8080/data")
Run Code Online (Sandbox Code Playgroud)

javascript d3.js queue.js

4
推荐指数
1
解决办法
808
查看次数

Joda Interval失去了时区信息

我正在定义一个Joda间隔如下:

final DateTimeZone fromDtz = DateTimeZone.forID("Europe/Paris");
final DateTime fromDt = DateTime.parse("2013-08-08T01:02:03+0200").withZone(fromDtz);
final DateTimeZone toDtz = DateTimeZone.forID("Europe/London");
final DateTime toDt = DateTime.parse("2013-08-08T01:02:05+0100").withZone(toDtz);
final Interval interval = new Interval(fromDt, toDt);
Run Code Online (Sandbox Code Playgroud)

但是,我似乎在时间间隔结束时丢失了时区信息.如果我toString()在收到的间隔内做一个简单的事情:

2013-08-08T01:02:03.000+02:00/2013-08-08T02:02:05.000+02:00
Run Code Online (Sandbox Code Playgroud)

这是我想要保留的一些信息(在时间间隔结束时日期时间的具体时区).

我浏览了文档和源代码,看起来Interval只包含一个单一的年表.有没有办法告诉Joda保留两个时区而不用手动围绕两个单独的DateTimes?

java jodatime

3
推荐指数
1
解决办法
367
查看次数

使用Guava标准化丑陋的方法参数

我有一个包含可选项的类Map:

 private Optional<ImmutableMap<String, String>> stuff;
Run Code Online (Sandbox Code Playgroud)

在我的类构造函数中,我被传递Map<String, String> inputStuff,其中inputStuff可能是:

  • null
  • 一个空的 Map
  • 一个人口稠密的 Map

对于我需要存储的前两个实例Optional.absent(),对于第三个实例,我需要存储Optional地图的不可变副本.在处理这个方面我能想出的最好的是:

    final ImmutableMap<String, String> tmp = ImmutableMap.copyOf(Objects.firstNonNull(inputStuff, ImmutableMap.<String, String>of()));
    if (inputStuff.isEmpty())
    {
      this.stuff = Optional.absent();
    }
    else
    {
      this.stuff = Optional.of(inputStuff);
    }
Run Code Online (Sandbox Code Playgroud)

有没有更清洁的方法来处理这个?

java guava

0
推荐指数
1
解决办法
179
查看次数