假设有两个字符String,应代表ISO 639国家或语言名称.
你知道,Localeclass有两个函数getISOLanguages,getISOCountries它们分别返回一个String包含所有ISO语言和ISO国家的数组.
要检查特定String对象是否是有效的ISO语言或ISO国家/地区,我应该查看该数组中的匹配项String.好的,我可以通过使用二进制搜索(例如Arrays.binarySearch,ApacheCommons ArrayUtils.contains)来做到这一点.
问题是:存在任何提供更清洁方式的实用程序(例如来自Guava或Apache Commons库),例如返回a boolean以验证String作为有效ISO 639语言或ISO 639国家/地区的函数?
例如:
public static boolean isValidISOLanguage(String s)
public static boolean isValidISOCountry(String s)
Run Code Online (Sandbox Code Playgroud) 假设有一个抽象类,比方说A,和两个非抽象的子类,比如说A1和A2.我想通过使用GSON库从json格式"反序列化"它们.
我得到一个A对象数组.
int n = ...;
A[] list = new A[n];
A[0] = new A1(....);
A[1] = new A2(....);
...
Run Code Online (Sandbox Code Playgroud)
有人转换为JSON字符串,如下所示:
String json = (new Gson()).toJson(list);
Run Code Online (Sandbox Code Playgroud)
最后,如果我尝试反序列化如下
A[] deserializedList = (new Gson()).fromJson(json, A[].class);
Run Code Online (Sandbox Code Playgroud)
然后我有一个错误,因为GSON默认的反序列化器找到一个抽象类(即A),它不能猜测子类类型.
我怎么解决这个问题?
PS:我读过有关自定义反序列化器的内容,但在这种情况下我不明白如何使用它们.
我使用jOOQ 3.8和Spring Boot 1.4.1.我看到jOOQ使用一种机制来保证事务的处理.
如果我将一个注释为事务的方法定义为一个执行二插入,那么它们是否在同一个事务中执行,例如
@Transactional(propagation = Propagation.MANDATORY)
public doInsert(){
DSL.using(configuration).insertInto(...);
DSL.using(configuration).insertInto(...);
}
Run Code Online (Sandbox Code Playgroud)
如果发生异常,所有执行的插入回滚吗?它们会在一次交易中执行吗?
或者,我应该这样做:
public doInsert(){
create.transaction(configuration -> {
DSL.using(configuration).insertInto(...);
DSL.using(configuration).insertInto(...);
});
}
Run Code Online (Sandbox Code Playgroud)
如果我使用注释和jOOQ事务如下所示会发生什么:
@Transactional(propagation = Propagation.MANDATORY)
public doInsert(){
create.transaction(configuration -> {
// Wrap configuration in a new DSLContext:
DSL.using(configuration).insertInto(...);
DSL.using(configuration).insertInto(...);
});
throw new RuntimeException(":)");
}
Run Code Online (Sandbox Code Playgroud)
无论例外情况如何,都会提交事务中的更改吗?(我希望它)
我使用org.apache.http.client.HttpClient.我有一个问题涉及这个类的使用.
我应该为HttpClient每个请求创建一个新的(例如,因为它是一个轻量级对象),或者每个http请求最好使用一个唯一的实例(例如,因为创建/删除是昂贵的)?如果只HttpClient允许使用一个实例,则是HttpClient线程安全的(例如,它可以同时处理许多http请求),或者在这种情况下最好创建一个HttpClients 的池?
实际上,我为每个请求创建了一个新的HttpClient.我怀疑我必须创建一个唯一的实例,在使用我的应用程序结束时关闭getConnectionManager().shutdown(),但我不知道我是否可以维护基于线程的并行性.
我想看一个例子来阻止JaCoCo将私有空构造函数报告为Java类中的非覆盖代码.
在我的maven插件配置中
<rule>
<element>CLASS</element>
<excludes>
<exclude>JAVAC.SYNTHCLASS</exclude>
<exclude>JAVAC.SYNTHMETH</exclude>
</excludes>
</element>
</rule>
Run Code Online (Sandbox Code Playgroud)
是不是有类似的构造函数?
我正在使用iCheck框架,我有两个输入
<input name="group" id="id1" type="radio" checked>
<input name="group" id="id2" type="radio">
<input name="group" id="id3" type="radio">
<input name="group" id="id4" type="radio">
Run Code Online (Sandbox Code Playgroud)
点击后我调用ajax函数.如果出现故障,我想将checked属性设置为先前选择的输入.
var currentChecked = $("input[name='group']:radio:checked");
$("input[name='group']:radio").each(function() {
$(this).on('ifChecked', function(){
$.ajax({
url: "/ajax/something/"
})
.done(function (data) {
currentChecked = $(this);
})
.fail(function (data) {
$(this).removeAttr('checked');
currentChecked.prop('checked', true);
});
});
});
Run Code Online (Sandbox Code Playgroud)
但这不会重置已选中的复选框.有什么我从iCheck框架中看不到的东西?有解决方案吗
我有一个文本文件(比方说textfile.txt)存储在Netbeans 7.3的项目文件夹中,例如
project folder
textfile.txt
src
package
package.subpackage
MyClass.java
Run Code Online (Sandbox Code Playgroud)
当我编译时,我得到一个dist放置jar文件的文件夹,例如
project folder
textfile.txt
dist
MyProject.jar
src
package
package.subpackage
MyClass.java
Run Code Online (Sandbox Code Playgroud)
如何编辑build.xml文件以使文件textfile.txt复制到dist文件夹下?
我有一个Spring启动应用程序,我想导入一个用spring boot编写的依赖项,它定义了一些控制器.
也许它很简单,但是如何让主应用程序能够在导入的模块中初始化所有这些控制器?当我尝试访问这些控制器的路径时,我得到一个错误,错过了给定路径的处理程序方法.我尝试如下:
@SpringBootApplication
@ComponentScan(basePackages = {"com.main.project", "com.imported.dependency"})
public class MyApplication
implements CommandLineRunner {
public static void main(final String... args) {
SpringApplication app = new SpringApplication(MyApplication.class);
app.setWebEnvironment(true);
app.run(args);
}
}
Run Code Online (Sandbox Code Playgroud)
即我试过@ComponentScan,但没有任何反应.
我还试图查看控制器是否已加载:
ApplicationContext ctx = SpringApplication.run(FrontendApplication.class, args);
System.out.println("Let's inspect the beans provided by Spring Boot:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
Run Code Online (Sandbox Code Playgroud)
他们不是.我试图删除@SpringBootApplication,并使用@EnableAutoConfiguration和@ComponentScan,但这不起作用.
建议?
我想反序列化在Java中包含空值的json字符串.我想将对象反序列化为Properties对象.json字符串类似于:
{"prop1":null, "propr2":"fancy value"}
Run Code Online (Sandbox Code Playgroud)
当我反序列化时使用
String json = //
new Gson().fromJson(json, Properties.class);
Run Code Online (Sandbox Code Playgroud)
我得到一个空指针异常,因为Hastable它进入了Properties对象.如何指示Gson忽略空值的反序列化?
我有一个Spring Boot 1.4.3项目.在test/resources文件夹中我有两个属性文件,让我们说
a-test.properties和b-test.properties.
测试类注释如下:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations = "classpath:a-test.properties")
Run Code Online (Sandbox Code Playgroud)
但是,我在测试中看到也b-test.properties加载了属性(我通过简单的打印输出验证了这一点).
为什么?我怎么能阻止这个?
从我的测试中提取的示例
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations = "classpath:base-test.properties", inheritProperties=false)
public class EmailServiceContextBasedTest {
@SpyBean
public JavaMailSender javaMailSender;
@Before
public void setUp() throws Exception {
System.out.println(
((JavaMailSenderImpl)javaMailSender).getPassword()
);
System.out.println(
((JavaMailSenderImpl)javaMailSender).getJavaMailProperties()
);
}
@Test
public void test() throws Exception {
// do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里a-test.properties:
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=email@gmail.com
spring.mail.password=password
spring.mail.properties.mail.smtp.auth=false
spring.mail.properties.mail.smtp.starttls.enable=false
Run Code Online (Sandbox Code Playgroud)
和 b-test.properties
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=myemail@gmail.com …Run Code Online (Sandbox Code Playgroud) java ×7
spring ×3
gson ×2
compilation ×1
connection ×1
controllers ×1
guava ×1
http ×1
icheck ×1
iso ×1
javascript ×1
jooq ×1
jquery ×1
json ×1
netbeans-7 ×1
properties ×1
spring-boot ×1
spring-mvc ×1
transactions ×1
unit-testing ×1
validation ×1