所以,我想用vanilla JS做的事情相当简单,但是我正在使用AngularJS,我想知道如何在框架内做到最好.我想在多选框中更新所选选项.我不想添加或删除任何选项.这是我的HTML的样子:
<select multiple>
<option value="1">Blue</option>
<option value="2">Green</option>
<option value="3">Yellow</option>
<option value="4">Red</option>
</select>
Run Code Online (Sandbox Code Playgroud)
使用以下数组,我想以编程方式从此列表中选择/取消选择选项:
[{id:1, name:"Blue"},{id:4, name:"Red"}]
Run Code Online (Sandbox Code Playgroud)
当我在范围内设置此数组时,我希望选择框取消选择非蓝色或红色的任何内容并选择蓝色和红色.我在Google网上论坛上看到的标准回复是使用ng-repeat.但是,我无法每次都重新创建列表,因为所选值列表不完整.据我所知,AngularJS没有这方面的机制,我不知道如何在不使用jQuery的情况下做到这一点.
我正在尝试将Map的JSON表示作为POST参数发送到我的控制器中.
@RequestMapping(value = "/search.do", method = RequestMethod.GET, consumes = { "application/json" })
public @ResponseBody Results search(@RequestParam("filters") HashMap<String,String> filters, HttpServletRequest request) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
我发现@RequestParam只会抛出500错误,所以我尝试使用@ModelAttribute.
@RequestMapping(value = "/search.do", method = RequestMethod.GET, consumes = { "application/json" })
public @ResponseBody Results search(@ModelAttribute("filters") HashMap<String,String> filters, HttpServletRequest request) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
这将正确响应请求,但我意识到地图是空的.随后的实验,我发现任何对象(不仅仅是HashMap)都会被实例化,但是不会填充任何字段.我的类路径上有Jackson,而我的控制器将使用JSON进行响应.但是,我的当前配置似乎不允许Spring通过GET/POST参数读取JSON.
如何将客户端AJAX请求中的对象的JSON表示作为请求参数传递给Spring控制器并获取Java对象?
编辑添加我的相关Spring配置
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" /> …Run Code Online (Sandbox Code Playgroud) 杰克逊正在做一些真正奇怪的事情,我找不到任何解释.我正在进行多态序列化,当一个对象独立时它可以很好地工作.但是,如果将相同的对象放入列表并将列表序列化,则会删除类型信息.
它丢失类型信息的事实将导致人们怀疑类型擦除.但是在序列化列表内容期间会发生这种情况; 杰克逊所要做的就是检查它正在序列化的当前对象以确定其类型.
我用Jackson 2.5.1创建了一个例子:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.List;
public class Test {
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({
@Type(value = Dog.class, name = "dog"),
@Type(value = Cat.class, name = "cat")})
public interface Animal {}
@JsonTypeName("dog")
public static class Dog implements Animal {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = …Run Code Online (Sandbox Code Playgroud) 这有点令人发狂,我在Maven工作几年之前从未见过它.一个简单的项目(我自己没有写过)会随机地过滤资源,我无法弄清楚可能导致它的原因.我不能分享项目源代码,但我会尝试尽可能多地分享POM.请记住,问题不在于代码,而是Maven随机决定不过滤资源.
我最初在我的POM的构建标记中配置了这个:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
Run Code Online (Sandbox Code Playgroud)
在我的src/main/resources目录中,我有一个名为spring-config.xml的文件.此文件中有几个属性,应由Maven配置文件属性替换.我已经配置了我的构建配置文件:
<profile>
<id>stage</id>
<properties>
<env.name>STAGE</env.name>
<db.url>jdbc:oracle:thin:@xxx.xxx.com:1521:xxx</db.url>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
要构建,我运行此命令:
mvn clean package -P stage
Run Code Online (Sandbox Code Playgroud)
现在,这个项目使用Spring,它使用相同的Spring配置进行测试和执行,因此上下文将在运行测试用例时创建数据库连接.大多数情况下,构建将完成,测试用例将通过.但是,在10中大约有1次,测试用例将失败,因为属性没有被替换,Spring尝试连接到"$ {db.url}"而不是"jdbc:oracle:thin:@ xxx.xxx.com:1521 :XXX".
奇怪的是,尽管刚刚通过测试案例,但打包的JAR在10中大约有9次会遇到同样的问题.我检查了目标/ classes目录,那里的文件有完全相同的问题.我认为在构建生命周期的某个点上使用Maven资源插件会发生奇怪的事情,也许它会错误地覆盖文件.
在Maven生命周期中,顺序是compile-> test-> package.因此,为了在令我头疼的两个阶段上强制过滤资源,我将资源插件配置为在编译阶段和测试阶段运行:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
<executions>
<execution>
<id>this-is-silly</id>
<phase>compile</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
<execution>
<id>why-must-i-exist</id>
<phase>test</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这似乎是一贯的工作,但我仍然没有任何世俗的想法,为什么我需要在过去几年中为数十个项目中的一个项目做这个.我以前从未见过Maven间歇性地做某事,这让我担心它会再次破裂.任何想法将不胜感激.
这可能是我误解了我所读到的内容的一个例子,但是用Java杀死一个线程的所有例子似乎都表明你必须发出一个信号来杀死自己; 没有一些严重的风险,你不能从外面杀死它.问题是,所有关于如何"礼貌地"要求线程死亡的例子都有某种循环,所以你要做的就是在每次迭代时都看一个标志.
所以,我得到的是一个线程,它只需要一段时间(一系列SQL查询).我当然可以在每一步之后进行检查,但它们不是在一个循环中,并且我没有一种非常优雅的方式可以解决这个问题.这是我正在做的一个例子:
new Thread(new Runnable(){
public void run(){
//query 1
Connection conn = db.getConnection();
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT ...");
while(rs.next()){
//do stuff
}
//query 2
rs = s.executeQuery("SELECT ...");
while(rs.next()){
//do stuff
}
//query 3
rs = s.executeQuery("SELECT ...");
while(rs.next()){
//do stuff
}
}
}).start();
Run Code Online (Sandbox Code Playgroud)
这是一个例子,我不使用匿名内部类,但它说明我的run()方法不能优雅地停止自己.此外,即使我在每个步骤之后检查,如果特定查询需要很长时间才能运行,则此代码将无法在查询完成之后停止.
这段代码用于GUI应用程序,我真的想找到一种很好的方法来快速杀死一个线程而不使用Thread.stop().
编辑 - yshavit的答案是一个很大的帮助,因为我不知道Statement.cancel()存在.如果你很好奇,我的特定问题的答案是构建一个更抽象的数据库访问类.该类必须创建一个子线程来执行查询并在其运行时循环,检查每次迭代是否当前线程(而不是子线程)被中断.如果它被中断,它只调用Statement.cancel(),子线程将抛出异常并死掉.并非所有JDBC驱动程序都支持Statement.cancel(),但Oracle 11g 支持.
我知道你不应该在Javascript中做阻塞,而且我从来没有无法重构那些必须这样做.但我遇到了一些我不知道如何处理回调的东西.我正在尝试使用带有html2canvas的Downloadify(这仅适用于IE,下载数据URI在IE中不起作用).您必须指定数据函数,以便Flash对象知道要下载的内容.不幸的是,html2canvas是异步的.在获取数据URI之前,我需要能够等到onrendered事件被填满.
$('#snapshot').downloadify({
filename: function(){
return 'timeline.png';
},
data: function(){
var d = null;
html2canvas($('#timeline'),{
onrendered:function(canvas){
d = canvas.toDataURL();
}
});
//need to be able to block until d isn't null
return d;
},
swf: '../static/bin/downloadify.swf',
downloadImage: '../static/img/camera_icon_32.png?rev=1',
width: 32,
height: 32,
transparent: true,
append: false
});
Run Code Online (Sandbox Code Playgroud)
我对其他方法的建议持开放态度,但我被困住了.
编辑 - 有几条评论表明需要有关Downloadify的更多信息(https://github.com/dcneiner/Downloadify).Downloadify是一个Flash对象,可用于触发浏览器的"另存为"窗口.downloadify()函数只是初始化Flash对象并<object/>在元素中粘贴标记.由于它是Flash对象,因此您无法在不导致安全违规的情况下从Javascript触发事件.
我只在IE上使用它来下载Canvas元素的图像.在所有其他浏览器中,我只能使用数据URI,但IE是一种特殊的花.
如果我在这里混淆任何ISO日期相关条款,请提前道歉.
我希望能够在给定的一年中每周进行一次迭代(比如,2015年).我意识到您可以计算2015年1月1日到2015年12月31日之间的周数,但这不符合一周的ISO标准.相反,它给出了两个日期之间7天的时间段.2015年第一个ISO周并不一定从2015年1月1日开始.
如果我可以获得第一周的第一个日期,我相信我可以简单地迭代ZonedDateTime.plusWeeks(1)52周.您可以通过字段访问者获取任意日期的周数:
ZonedDateTime date = ZonedDateTime.now();
WeekFields weekFields = WeekFields.of(Locale.getDefault());
int weekNumber = date.get(weekFields.weekOfWeekBasedYear());
Run Code Online (Sandbox Code Playgroud)
鉴于此,我认为必须有可能在Java8 Time API中获取特定年份第一周第一天的日期,但我还没有找到办法.
我想以易于分发的形式打包Groovy CLI应用程序,类似于Java对JAR所做的事情。我还找不到任何似乎可以做到这一点的东西。我发现一对夫妇的喜欢的东西这个意图用于一次性的脚本,但没有什么可以编译很多独立的Groovy文件和资源数据的组成一个完整的Groovy应用程序。
我不一定非要让Groovy独立可执行文件成为它的一部分(尽管那样很好),而且这不是旨在供其他JVM语言使用的库。我想要的只是我的应用程序的一个简单打包的版本。
编辑:根据我收到的几个回复,我认为我的目标不够明确。我正在寻找的基本上是Groovy可以支持的存档格式。这里的目标是使其更易于分发。现在,最好的方法是将其压缩,让用户解压缩,然后修改批处理/ shell文件以启动它。我希望找到一种使它更像可执行JAR文件的方法,用户只需要运行一个文件即可。
我知道Groovy可以编译为与JVM兼容的字节码,但是我并不是想让它作为Java代码运行。我正在根据用户的配置在运行时动态添加Groovy类,而Java将无法处理该类。就像我在原始帖子中所说的那样,将Groovy可执行文件包含在存档中是一种不错的选择。但是,我确实确实需要Groovy使其能够运行,而不是Java。
当我尝试使用如下代码在JQuery中创建一个元素时:
$('#grid').append('<div id="gridElement'+counter+'" class="ui-block-'+rowLetter(counter)+'"></div>');
$('#gridElement'+counter).append('<div id="gridContent'+counter+'" data-inline="true"></div>');
$('#gridContent'+counter).append('<a id="button'+counter+'" href="#" data-role="button"></a>');
$('#button'+counter).html('someButtonText');
Run Code Online (Sandbox Code Playgroud)
正确添加元素,但不执行JQuery Mobile样式.这种方式很有意义,我知道库一加载就会对DOM做一些事情,但我无法找到一种方法来实现命令.显然我需要指示JQuery Mobile库重建页面,但对于我的生活,我一般都找不到任何可以做到的事情.我已经设法找到几个关于这是选择框和列表的问题的帖子,但一般,网格或按钮没有任何内容.到目前为止这是否可能?它仍处于alpha状态,所以可能不是.
我正在尝试找到一个好的,有效的方式来运行这样的查询:
SELECT *
FROM tableA a
WHERE a.manager IN ( SELECT id
FROM tableB b
CONNECT BY PRIOR b.id = b.manager_id
START WITH b.id = 'managerBob')
OR a.teamLead IN ( SELECT ID
FROM tableB b
CONNECT BY PRIOR b.ID = b.manager_id
START WITH b.ID = 'managerBob')
OR a.creator IN ( SELECT id
FROM tableB b
CONNECT BY PRIOR b.id = b.manager_id
START WITH b.id = 'managerBob')
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在尝试使用多个WHERE子句,但每个子句在等式的右侧使用相同的数据集.如果我使用多个子句,它似乎运行得非常慢,我很确定这是因为Oracle正在运行每个子查询.有没有办法让这样的工作?
SELECT *
FROM tableA a
WHERE a.manager,
a.teamLead,
a.creator in ( SELECT id …Run Code Online (Sandbox Code Playgroud) 所以,作为我正在研究的个人项目的一部分,我正在深入学习C++,而不是在学校.我是一名Java开发人员,因此内存管理有点难以再次习惯,而现在我正在以某种方式编写代码,我有一个关于不可变类的快速问题.
当我将它们视为一个概念时,我当然将它们与Java中的Strings进行比较.但是现在我在C++中,重新分配操作可能会造成内存泄漏(至少,我认为它可以).所以现在如果我这样做:
MyImmutableClass a ("blah");
a = a.modifyInSomeWay();
Run Code Online (Sandbox Code Playgroud)
其中modifyInSomeWay返回MyImmutableClass的新实例,我没有调用解构函数.在这里我是否有一些东西可以防止第一次分配"a"在内存中留下来?
我想将我的无序列表格式化为两部分文本。我一直在尝试找出如何使用 Google 执行此操作。但是每个人似乎都对让他们的列表从左向右流动感兴趣,这不是我想要做的。我正在寻找的是一种进行以下操作的方法:
Food Calories
Fruit
-Apple 90
-Grape 5
-Berries
-Strawberry 16
-Blueberry 9
Vegetable
-Cucumber 12
-Onions
-Red 29
-White 34
-Vidalia 47
Run Code Online (Sandbox Code Playgroud)
这可以使用无序列表和 CSS 实现吗?我不想为此使用表格,因为我想进行<li>扩展和收缩。
编辑:希望它现在看起来更像是一个扩展/合同层次结构,而不是严格的表格数据。我知道可以用表格来做到这一点,但以这种方式呈现层次结构似乎不太自然。
java ×5
javascript ×3
html ×2
json ×2
sql ×2
angularjs ×1
asynchronous ×1
c++ ×1
class ×1
compilation ×1
css ×1
database ×1
downloadify ×1
groovy ×1
html-lists ×1
html2canvas ×1
html5 ×1
immutability ×1
jackson ×1
java-time ×1
jquery ×1
maven ×1
maven-3 ×1
memory ×1
mobile ×1
oracle ×1
spring ×1
spring-mvc ×1