小编msu*_*ung的帖子

过渡到iOS 7:在iPad上查看的jQuery/iPhone Webapps的正确视口设置

我们有一个基本上有一个UIWebView的应用程序,在XCode中设置为"iPhone App".

到目前为止一切工作正常,但使用iOS 7 iPad模拟器,应用程序现在立即显示在"全屏",这不会是问题,但WebView似乎也放大了.

我只看到加载的网站的右上角1/4,必须滚动查看其余部分.

我们在应用程序中使用jQuery mobile 1.3.1.

编辑

我发现了错误.看来,视口元元素的语义在iOS版本之间发生了变化.

更改

<meta name="viewport" content="width=device-width, initial-scale=1">
Run Code Online (Sandbox Code Playgroud)

<meta name="viewport" content="initial-scale=1">
Run Code Online (Sandbox Code Playgroud)

为我工作,但我不确定这是否是要走的路,因为jQuery Mobile Demo Page确实将设置为设备.当我从UIWebView加载Demo-Page时,我得到了同样的效果.

是否有关于设置视口的"正确方法"的信息,特别是因为演示页面使用width = device-width

uiwebview ipad ios jquery-mobile ios7

25
推荐指数
1
解决办法
2万
查看次数

java 7中java 8的功能接口

java 8的功能接口是否可用(即jar),所以我可以在Java 7项目中使用它们?这样我以后可以更容易地将代码移植到惯用的java 8.如果不是,技术上是否可行,或者他们是否使用默认方法等新功能?

是的,我的意思是java.util.function中的接口.因为添加带有java前缀的包似乎是不允许从其他地方导入它们不是一个选项.

java compatibility java-7 java-8

19
推荐指数
2
解决办法
1万
查看次数

iOS 11.3(和11.4)中的UIWebView崩溃

我们有一个带有UIWebView的混合iOS应用程序,它可以加载一个相当复杂的网上商店(一堆跟踪像素,javasript,异步行为).自iOS 11.3推出以来,我们看到许多崩溃似乎来自UIWebView或相关组件.堆栈跟踪看起来像这样

Crashed: WebThread
0  WebCore                        0x18b7b0d98 WebCore::Page::sessionID() const + 162
1  WebKitLegacy                   0x18be91204 WebFrameNetworkingContext::storageSession() const + 24
2  WebCore                        0x18ad818bc WebCore::ResourceHandle::willSendRequest(WebCore::ResourceRequest&&, WebCore::ResourceResponse&&, WTF::CompletionHandler<void (WebCore::ResourceRequest&&)>&&) + 1012
3  WebCore                        0x18ad86f88 WTF::Function<void ()>::CallableWrapper<-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]::$_1>::call() + 208
4  JavaScriptCore                 0x1892157d4 WTF::dispatchFunctionsFromMainThread() + 344
5  Foundation                     0x1830fe0ec __NSThreadPerformPerform + 340
6  CoreFoundation                 0x18265b404 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
7  CoreFoundation                 0x18265ac2c __CFRunLoopDoSources0 + 276
8  CoreFoundation                 0x18265879c __CFRunLoopRun + 1204
9  CoreFoundation                 0x182578da8 CFRunLoopRunSpecific + 552
10 WebCore                        0x18a805dcc RunWebThread(void*) + 592
11 libsystem_pthread.dylib        0x1822d9220 …
Run Code Online (Sandbox Code Playgroud)

uiwebview webview ios hybrid-mobile-app

8
推荐指数
1
解决办法
2183
查看次数

如何防止带有ID的隐藏字段被黑客攻击

我正在构建一个简单的CRUD应用程序(不使用CRUD模块).

我的模型是一个带有一个属性的简单类.id是从Model隐式继承的.

@Entity
public class Account extends Model {

    @Required
    public String domain;
}
Run Code Online (Sandbox Code Playgroud)

该观点如下.请注意带有id的隐藏字段.

<form class="form-horizontal" action="@{Application.save}" method="POST">
<fieldset>
    <legend>Settings</legend>
    <input type="hidden" name="account.id" value="${account?.id}">

    #{field 'account.domain'}
    <div class="control-group #{if field.error != null} error #{/if}">
        <label class="control-label" for="${field.id}">&{field.name}</label>
        <div class="controls">
            <input type="text" class="input-xlarge" id="${field.id}" value="${field.value}" name="${field.name}">
            <span class="help-inline">${field.error}</span>
        </div>        
    </div>
    #{/field}        

    <div class="form-actions">
        <input class="btn btn-primary" type="submit" value="Save">
    </div>

</fieldset>
Run Code Online (Sandbox Code Playgroud)

我已经能够构建一个保存,更新工作的场景.

更新的方式是我从隐藏字段中读取ID,并更新记录.如果ID不可用,则会创建新记录.

所以问题是: ID是否可以被黑客攻击,即修改以便我将1更改为2,并假设存在2的记录,它将被覆盖.(我想用firebug或其他插件来说应该不难).

我该如何防止这种情况?我想到的一个选项是用给定的Id读取记录,如果允许用户修改它,我允许更新,否则不允许.这仍然不是万无一失的,因为虽然可以允许用户,但可以修改"错误"记录.

我想这是一个已知的问题,希望有一个已知的解决方案.

感谢您抽出宝贵时间回答我的问题.

playframework

7
推荐指数
1
解决办法
2344
查看次数

什么是Scala试图告诉我,我该如何解决这个问题?[required:java.util.List [?0] where type?0]

我正在学习Scala,今天我有信心将它介绍给我们的一个项目.

该应用程序执行了很多JPA/Hibernate的工作,我开始在Scala中实现一个Java接口.一切顺利,直到我试图将一些单元测试代码翻译成Scala.

我使用了很多Easymock,代码很自我解释.我想问题是,Scala不允许我返回一个类型化的java.util.List,它需要一个无类型的java.util.List.不幸的是,我不知道如何让Scala转换为需要类型参数的东西.

说明/重现我的问题的代码:

package some.package.name

import java.util.ArrayList
import java.util.List
import javax.persistence.Query
import org.easymock.EasyMock._
import org.junit.Assert._
import org.junit.Test

class MyGreatScalaTest {

  @Test
  def testSomething() : Unit = {

    val mockQuery: Query = createMock(classOf[Query])
    val mockResult: List[String] = new ArrayList[String]
    mockResult.add("great value")

    expect(mockQuery.getResultList).andReturn(mockResult)
    replay(mockQuery)

    assertEquals(
      (mockQuery.getResultList.asInstanceOf[List[String]]).get(0),
      "great value")

    verify(mockQuery)
  }
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下编译器错误:

[WARNING]  found   : java.util.List[String]
[WARNING]  required: java.util.List[?0] where type ?0
[WARNING]     expect(mockQuery.getResultList).andReturn(mockResult)
[WARNING]                                               ^     
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要mock来实现javax.persistence.Query的接口,它返回一个java.util.List.

java interop scala easymock typing

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

在Android <4.4上运行时,Mockito + Dexmaker测试崩溃

我有一些android测试,当在4.4/Kitkat下的Android版本上运行时会崩溃.

这些是我在build.gradle中的库

androidTestCompile 'org.mockito:mockito-core:1.9.5'
androidTestCompile 'com.google.dexmaker:dexmaker:1.1'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.1'
Run Code Online (Sandbox Code Playgroud)

虽然我需要添加一些提示来告诉Dexmaker将缓存放在哪里,但测试运行与Android 4.4版本一样正常.

System.setProperty("dexmaker.dexcache", getInstrumentation().getContext().getCacheDir().getPath());
Run Code Online (Sandbox Code Playgroud)

以下是设备的logcat输出:

D/dalvikvm( 1712): GC_FOR_ALLOC freed 479K, 19% free 2532K/3124K, paused 3ms, total 3ms
D/dalvikvm( 1712): GC_CONCURRENT freed 427K, 18% free 2595K/3136K, paused 1ms+0ms, total 3ms
D/dalvikvm( 1712): GC_CONCURRENT freed 311K, 16% free 2686K/3188K, paused 3ms+0ms, total 4ms
D/dalvikvm( 1712): GC_FOR_ALLOC freed 127K, 11% free 2852K/3188K, paused 1ms, total 1ms
D/dalvikvm( 1712): GC_FOR_ALLOC freed 123K, 7% free 3239K/3476K, paused 4ms, total 4ms
D/dalvikvm( 1712): GC_CONCURRENT freed 53K, 6% free …

android dalvik mockito dexmaker

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

泛型和Play框架

我在其当前版本中使用Play Framework,我的模型类扩展了play.db.jpa.JPABase.

今天我尝试将常用的查询类型设为泛型,并定义一个静态辅助方法来构造它.

我写了以下内容:

import play.db.jpa.Model;
import play.libs.F;

public class GenericQueries {

  public static <T extends Model> F.Option<T> firstOption(
          Class<T> clazz,
          String query,
          Object... parameters){

    final T queryResult = T.find(query,parameters).first();

    return (queryResult == null) ?
            F.Option.<T>None() :
            F.Option.Some(queryResult);
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

执行异常

发生UnsupportedOperationException:请使用@ javax.persistence.Entity批注对JPA模型进行批注.

我调试了方法,在运行时T似乎正确设置为它的相应Model类.我甚至看到了注释.

我怀疑一些课程增强伏都教的负责人,但我不完全确定.

有任何想法吗?

更新:将Model类添加为Requested

这是我使用的Model类之一的缩短版本.

package models;

import org.apache.commons.lang.builder.ToStringBuilder;
import play.data.validation.Required;
import play.db.jpa.Model;
import play.modules.search.Field;
import play.modules.search.Indexed;

import javax.persistence.Column;
import javax.persistence.Entity;
import java.util.Date;

@Entity @Indexed
public class FooUser extends Model {

  @Required
  public Date firstLogin; …
Run Code Online (Sandbox Code Playgroud)

java generics jpa playframework

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