我想知道是否可以使用Knockout.js的ko.applyBindings()
多次不同的ViewModels绑定到页面的一个部分.例如,假设我有这个:
<div id="foo">...</div>
...
ko.applyBindings(new PageViewModel());
ko.applyBindings(new PartialViewModel(), $('#foo')[0]);
Run Code Online (Sandbox Code Playgroud)
我现在正在应用两个ViewModel绑定<div id="foo>
.这合法吗?
假设我有一个Spring Java项目,我正在尝试将其配置为Web服务器servlet.这是web.xml文件的精简版本:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/generalApplicationContext.xml
</param-value>
</context-param>
<servlet>
<servlet-name>my-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/specificApplicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>my-servlet</servlet-name>
<url-pattern>/foo/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
这里要注意的关键是我已经指定了两个要加载的XML文件.一个是我的整个应用程序的通用,而另一个是特定于"my-servlet"servlet.对于只有一个servlet映射的设置,这没有意义.但是,我的项目有多个servlet映射,每个都有特定的Spring设置.
我的问题: Spring将首先加载哪个contextConfigLocation?它是generalApplicationContext.xml还是specialApplicationContext.xml?更重要的是,装载的顺序是否重要?从我的调试工作来看,它似乎很明显,因为当我将一些独立的Spring配置从一个文件移动到另一个文件时,我得到了不同的错误.
注意:对于多个servlet映射是否使用多个弹簧配置是一个好的做法是值得商榷的.使用XML配置而不是新的Java配置也是如此.但这不是我在这里要问的问题.让我们试着关注我的主要问题.
我希望能够结合Kibana 术语图的功能(能够根据特定属性的值的唯一性创建存储桶)和直方图(根据查询将数据分离到存储桶中,然后根据时间说明日期) .
总的来说,我想创建一个直方图,但我只想根据一个查询的结果创建直方图,而不是像在Kibana演示应用程序中完成的多个查询.相反,我希望每个特定字段的唯一值动态创建每个存储桶.例如,考虑我的查询返回的以下数据:
{"myValueType": "New York"}
{"myValueType": "New York"}
{"myValueType": "New York"}
{"myValueType": "San Francisco"}
{"myValueType": "San Francisco"}
Run Code Online (Sandbox Code Playgroud)
还假设每个记录都有一个timestamp
按日期分隔直方图数据的字段.对于那个特定的日期,我希望将数据作为3的计数传递到New York
桶中,并将数量2 传递到San Francisco
桶中.但是,我只能为我的一个链接查询显示5的计数.当我配置直方图时,我能够指定一个用于我的时间戳的字段,但不能从中创建存储桶.我可以发送一个字段来计算总/最小/最大/平均值,但是这个字段必须是数字,所以这也不是解决方案.
如果我使用术语图来创建饼图或条形图,我确实能够根据我指定字段的唯一值(在本例中为"myValueType")将我的数据分成桶,但这总计有史以来的数据,而不是按时间戳分割数据.虽然这是一个很好的信息,但它并不理想,因为我无法检测数据的趋势.
我正在寻找一个可以执行以下操作之一的解决方案:
我相信我在这里失踪了.请帮帮我.非常感谢.
一个高度相关的SOF问题:是否可以在Kibana中使用直方图面或其卷曲响应
这个问题是关于反序列化到乔达时间 日期时间使用杰克逊的数据类型-乔达模块的杰克逊.是否有一个默认时区,日期字符串将被反序列化?如果是这样,它是什么?是UTC吗?
我需要问这个,因为杰克逊的文档并不是特定的Joda-Time DateTime.我在本文(http://wiki.fasterxml.com/JacksonFAQDateHandling)中发现,杰克逊将GMT作为反序列化为java.util.Date
或的默认时区java.util.Calendar
.但是,本文档中没有提及Joda-Time数据类型.另外,我特别需要字符串DateTime
使用UTC时区反序列化为对象,而不是GMT:尽管这两个区域非常相似,但是存在一些小差异,因此GMT对我来说是不可行的.
谢谢.
我正在开发一个Maven Java客户端/服务器项目,该项目依赖于Protocol Buffers(protobuf)在客户端和服务器之间发送RPC.我使用Eclipse for Java EE作为我的主IDE.由于我在项目中使用Maven,因此我使用Eclipse 的m2eclipse插件.我在Eclipse中配置我的项目以使用"Maven Nature".
基本上,通过上面描述的工作空间设置,如果Eclipse配置为自动构建(默认情况下为:项目菜单 - >自动构建),我将遇到INFINITE BUILD LOOPS.每当Eclipse旋转构建时,构建将进入无限循环,通常导致Eclipse消耗所有计算机的CPU资源,并且最终由于内存溢出而在IDE中出现错误弹出窗口.发生的事情是,.proto
文件中生成的所有Java代码都是由Maven通过Eclipse构建不断构建的.一旦生成proto文件并将其编译到目录中(在我的例子中target/generated-sources
),就会立即重复构建proto文件.即使我点击停止按钮,构建也会再次旋转.我能真正停止无限构建循环的唯一方法是自动禁用Build.
通过查看Web上的链接(请参阅此SOF帖子,也在下面列出),一种解决方法是在Eclipse项目中禁用Maven Project Builder.为此,我必须打开Eclipse项目设置 - >构建器 - >取消选择Maven Project Builder.现在,无限构建循环不会发生,似乎是因为m2eclipse的构建器是罪魁祸首.但是,我现在从此构建器中丢失了许多有用的功能.也就是说,我无法通过m2eclipse利用自动资源处理,例如资源过滤.请注意,使用Maven Nature的项目在Java Build Path中排除了资源目录(src/main/resources
和src/test/resources
),因为期望Maven Project Builder将它们添加到类路径中.因此,我在禁用Maven Project Builder时遇到的一个问题是我无法在测试中从类路径中读取资源文件.我必须首先运行一个手动maven构建来访问资源(但是一旦我刷新项目,我将无法再找到这些类路径资源).或者,我可以更改我的项目的Java Build Path,但这违背了Maven Nature的默认设置,除了依赖protobuf之外,它在所有Eclipse Java项目中都适用.
有谁知道如何解决这个问题?Eclipse平台似乎太成熟了,不能继续这个问题.我总是可以提交一个会收集灰尘的Eclipse bug,但也许它不是Eclipse的bug,而是我身边的错误配置.非常感谢您的帮助.
测试/ 中<input>
元素值的最佳方法是什么?dom-testing-library
react-testing-library
我采用的方法是通过closest()
方法获取原始输入元素本身,然后我可以直接访问value
属性:
const input = getByLabelText("Some Label")
expect(input.closest("input").value).toEqual("Some Value")
Run Code Online (Sandbox Code Playgroud)
我希望有一种方法可以做到这一点,而无需直接访问 HTML 属性。这似乎不符合测试库的精神。也许类似于jest-dom toHaveTextContent 匹配器匹配器:
const input = getByLabelText("Some Label")
expect(input).toHaveTextContent("Some Value")
Run Code Online (Sandbox Code Playgroud)
根据评论中的请求,这里是一个代码示例,显示了我觉得需要测试输入框中的值的情况。
这是我在我的应用程序中构建的模态组件的简化版本。喜欢,极其简化。这里的整个想法是,基于字符串道具,模态打开时输入预先填充了一些文本。用户可以自由编辑此输入并通过按按钮提交。但是,如果用户关闭模态然后重新打开它,我希望将文本重置为该原始字符串道具。我为它写了一个测试,因为以前版本的模态没有重置输入值。
我是用 TypeScript 写的,所以每个道具的类型都非常清楚。
interface Props {
onClose: () => void
isOpen: boolean
initialValue: string
}
export default function MyModal({ onClose, isOpen, initialValue }) {
const [inputValue, setInputValue] = useState(initialValue)
// useEffect does the reset!
useEffect(() => {
if (!isOpen) …
Run Code Online (Sandbox Code Playgroud) 应该吉斯提供商与被标注@Singleton
?我的理由:如果Provider正在向其他Singleton类提供一个对象,并且该对象本身的创建成本相对较高,那么使用在其@Inject
标记的构造函数中构造昂贵对象的Singleton Provider,将其存储为一个成员,只是在getter中返回已保存的全局变量?像这样的东西:
@Singleton
public class MyProvider extends Provider<ExpensiveObject> {
private ExpensiveObject obj;
@Inject
public MyProvider() {
/* Create the expensive object here, set it to this.obj */
}
@Override
public ExpensiveObject get() {
return obj;
}
}
Run Code Online (Sandbox Code Playgroud)
让我在这里澄清一点.这不是关于我是否应该使用@Singleton
或.in(Singleton.class)
.这必须通过创建对象的"缓存"做更多事情.
假设对象创建需要完成多个RPC,例如反序列化JSON或发出HTTP请求.这可能需要一段时间.如果我要使用这个Provider多次注入类,那么只创建一次这样的对象是不是有意义呢?
另请注意,我必须能够使用Provider,因为我需要能够注入Provider.
我的问题与此SOF问题基本相同,但处理的@BeforeMethod
不是@BeforeClass
TestNG.
在确定带@BeforeMethod
注释的方法执行的顺序时,测试类继承是否会起作用?如果我有A类并且B类扩展A并且两者都有一个@BeforeMethod
方法,则父母的(A)将在孩子的(B)之前运行,或者孩子在父母之前运行,或者命令是否依赖于其他因素如此作为方法名称的字母顺序.我正在尝试查看是否存在我可以依赖的继承顺序,而不必使用注释的参数,例如dependsOnMethods.
我正在Jenkins构建服务器上构建Maven Java应用程序.我java.lang.OutOfMemoryError: PermGen space
在Jenkins构建期间遇到了很多次(但从未在我的localhost上),因此它无法构建.
我已经尝试过设置MAVEN_OPTS
Jenkins:我进入了Jenkins
- > Manage Jenkins
- > Configure system
- > Global MAVEN_OPTS
并且设置为-Xms512m -Xmx1024m -XX:MaxPermSize=512m -XX:PermSize=512m
.尽管将其设置为这个高价值,我们仍然会遇到PermGen空间问题.我不想将MAVEN_OPTS设置为更高的值; 我不知道我的应用程序如何需要一个空间,我宁愿深入研究高内存使用问题.
最近,我一直在想,也许permgen空间问题不是来自Maven本身,而是来自Maven旋转的JVM进程之一(例如:插件).我提出这个假设,因为Maven仍然能够执行TestNG测试,尽管已经吐出了我们的permgen空间错误线.导致PermGen错误的一个这样的插件是Jetty:
Oct 31, 2012 7:55:37 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: handle failed
java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)
因此,我想知道:
该MAVEN_OPTS
变量是否也适用于Maven构建旋转的子JVM进程?如果没有,那么如何为这些子进程(如Jetty)设置JVM选项?
注意:我使用的是Maven 3.0.4.
我正在编写一个Bash脚本,我希望所有命令在发生时都能回显.我知道我需要分别使用set -x
和set +x
切换此行为(此处的SOF帖子).但是,它不会回显所有内容,即I/O重定向.
例如,假设我有这个非常简单的Bash脚本:
set -x
./command1 > output1
./command2 arg1 arg2 > output2
Run Code Online (Sandbox Code Playgroud)
这将是输出
+ ./command1
+ ./command2 arg1 arg2
Run Code Online (Sandbox Code Playgroud)
Bash没有回显我的stdout重定向到output1和output2.为什么是这样?我怎样才能实现这种行为?也许shopt
我必须在脚本中设置一个选项?
注意:我还注意到管道不会按预期打印.例如,如果我要使用此命令:
set -x
./command3 | tee output3
Run Code Online (Sandbox Code Playgroud)
我会得到这个输出:
+ tee output3
+ ./command3
Run Code Online (Sandbox Code Playgroud)
如何使命令完全按照它们的编写方式进行回显,而不是让脚本重新排序管道?