小编Mat*_*att的帖子

插入时hsqldb更新

有没有人知道通过调用INSERT来制作HSQLDB更新列的解决方案.我希望我的代码能够插入,如果已有数据,则更新该数据.我知道MySQl,我相信,它已经'重复关键更新'.我似乎无法找到任何最近的文档.

jdbc insert hsqldb

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

所有应用程序的JavaFX辅助屏幕"始终位于顶部"

我已经阅读了使用JDialog来包装JFXPanel以便使用JDialog的alwaysOnTop方法.它有效,但我对这个黑客有一个小问题.

由于我正在使用这种技术为我的主应用程序(弹出窗口等)创建辅助窗口,我需要将它们设置在主窗口的顶部.如果我使用包装黑客要做到这一点,顶部面板是"总在最前面"的一切(包括其他应用程序).

有没有办法只将二级屏幕放在我的应用程序之上?我不喜欢可以在我的应用程序的主窗口和辅助窗口之间拖动另一个应用程序的事实.

javafx always-on-top

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

Bash脚本属性文件使用'.' 在变量名称中

我是bash脚本的新手,对于在bash脚本中使用.properties文件中的属性有疑问.

我见过一个使用'.'的bash属性文件.变量名之间,例如:

this.prop.one=someProperty
Run Code Online (Sandbox Code Playgroud)

我看到他们在一个脚本中调用,如:

echo ${this.prop.one}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试设置此属性时,我收到一个错误:

./test.sh: line 5: ${this.prop.one}: bad substitution
Run Code Online (Sandbox Code Playgroud)

如果我没有','我可以使用属性.在变量名中,并包含props文件:

#!/bin/bash
. test.properties
echo ${this_prop_one}
Run Code Online (Sandbox Code Playgroud)

我真的希望能够使用'.' 在变量名中,如果可能的话,不必包含.脚本中的test.properties.

这可能吗?

更新:

谢谢你的回答!那么,这很奇怪.我正在使用一个看起来像这样的bash脚本(glassfish服务):

#!/bin/bash

start() {
        sudo ${glassfish.home.dir}/bin/asadmin start-domain domain1
}

...
Run Code Online (Sandbox Code Playgroud)

...还有像这样的属性文件(build.properties):

# glassfish
glassfish.version=2.1
glassfish.home.dir=${app.install.dir}/${glassfish.target}
...
Run Code Online (Sandbox Code Playgroud)

那么,必须有一些方法来做到这一点吗?如果它们在属性文件中声明,这些可能不被视为"变量"吗?再次感谢.

linux bash scripting properties-file

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

REST处理错误的参数

在RESTful服务中处理错误参数的正确方法是什么?我现在有一个端点,如果发送了错误的数据类型,则返回400.

@ResponseBody
@RequestMapping(produces = "application/json", method = RequestMethod.GET, value="/v1/test")
public MyResponse getSomething(@RequestParam BigDecimal bd) {
    MyResponse r = new MyResponse();
    r.setBd(bd);
    return r;
}
Run Code Online (Sandbox Code Playgroud)

如果最终用户传递一个String而不是BigDecimal,那将是非常好的,响应将返回一个带有响应代码,状态以及我希望包含的任何其他内容的json,而不仅仅是400.有办法做到这一点吗?

更新:我最初的想法是包装每个参数,然后检查它是否是该包装类中的正确类型.这看起来有点傻.是不是有一个验证器,我可以添加到类路径,可以识别这样的东西?

另外,有一种方法可以很容易地使用我可以自己创建的Bean类型来处理这个问题,但是像BigDecimal这样的标准类型呢?

UPDATE-2:此更新解决了使用@ExceptionHandler的答案.

TestController.java

import java.math.BigDecimal;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/")
public class TestController {

    //this is where correct input from user is passed, no binding errors
    @RequestMapping(produces = "application/json", method = RequestMethod.GET, value="/v1/test")
    public
    @ResponseBody
    MyResponse getSomething(@RequestParam BigDecimal bd) {
        MyResponse …
Run Code Online (Sandbox Code Playgroud)

java rest spring

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

FocusListener行为

我有一个JFrame,我想关闭,当用户点击关闭它.我有两个JTextFieldsJButton(用户名,密码,提交).当我给他们所有的FocusListener时候,只要用户从一个字段进入另一个字段,窗口就会关闭.如果用户单击弹出窗口中的任何位置,我如何允许用户从一个字段转到另一个字段并仅关闭它?

public class LoginForm {

    static JTextField userName;
    static JTextField password;
    static JButton submit;
    JFrame main;
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

    UserSession session;

    public LoginForm(){

        Handler handle = new Handler();  //inner class
        LoginFormFocusListener fl = new LoginFormFocusListener();   //inner class

        main = new JFrame("Please Login");

        main.setUndecorated(true);
        main.setBounds((dim.width/2) - (500/2),(dim.height/2) - (150/2),500,150);
        main.setVisible(true);
        main.setAlwaysOnTop(true);
        main.setResizable(false);
        main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        userName = new JTextField(10);
        password = new JTextField(10);
        main.setLayout(new GridLayout(0,1));

        JPanel panel = new JPanel();
        main.add(panel);
        panel.add(new JLabel("Username: ")); …
Run Code Online (Sandbox Code Playgroud)

java swing jframe focuslistener

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

Java 证书客户端 SSL:无法找到所请求目标的有效证书路径

我们需要客户端身份验证才能向我们的某些 Web 服务发送 RESTful 请求。我已经通过密钥工具在本地 mac os 上安装了客户端证书 (.pem) 和密钥。这些不是自签名的。

openssl pkcs12 -export -name myservercert -in not_self_signed.crt -inkey server.key -out keystore.p12
Run Code Online (Sandbox Code Playgroud)

...并转换为 JKS 格式

keytool -importkeystore -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias myservercert
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建一个 Java 客户端来进行身份验证。这是我到目前为止想出的:

import java.io.FileInputStream;
import java.security.KeyStore;

import javax.net.ssl.SSLContext;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;


public class TestClientCustomSSL {

    public final static void main(String[] args) throws Exception {

        KeyStore keyStore = KeyStore.getInstance("JKS");
        keyStore.load(new FileInputStream("/Users/me/mykeystore.jks"), "mypassword".toCharArray());

        SSLContext …
Run Code Online (Sandbox Code Playgroud)

java ssl client certificate pem

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

方案列表总是以相反的顺序

对于大多数更先进的阴谋者来说可能是一个微不足道的问题,但作为一个新手,我发现这是一个问题.

我需要一种方法来构建一个新的列表,其顺序与它进入时的顺序相同.例如,假设我们有一个列表'(1 2 0 3 4 0 0 5).但是遍历列表并将cdr传回,因为第一个参数最终会向后构建新列表.

这是代码中的一个例子:

我传递了一个需要完成工作的"旧列表"和一个空列表作为"新列表"形成并返回.

注意,将0取出仅仅是新列表必须满足的"某些条件"

  (define (form-new-list old-list new-list)
    (cond ((null? old-list) new-list)
          (else
           (if (eq? (car old-list) 0) (form-new-list (cdr old-list) new-list)
               (form-new-list (cdr old-list) (cons (car old-list) new-list))))))

  ;test
  (form-new-list '(1 2 0 3 4 0 0 5) '()) ; gives (5 4 3 2 1)
  ;but want (1 2 3 4 5)
Run Code Online (Sandbox Code Playgroud)

我不只是想反转使用反向过程返回的列表,而是希望首先以正确的顺序将新列表放在一起.

是否有某种"技巧",就像在其他地方进行递归调用一样?

任何意见是极大的赞赏.

recursion scheme list r5rs

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

用Json Net解析单个整数

我试图用Json.Net解析一个简单的长整数.这就是响应的样子:

标题:

{
  Transfer-Encoding: chunked
  Date: Fri, 03 Jul 2015 16:15:33 GMT
  Server: Apache-Coyote/1.1
  Content-Type: application/json
}
Run Code Online (Sandbox Code Playgroud)

身体很简单:1435775316000

在使用Java的gson库中,我可以像这样解析它:

Long one = gson.fromJson("1435775316000", Long.class);
Run Code Online (Sandbox Code Playgroud)

我的.Net客户端中有一个方法来解析响应,但它希望它采用Json格式:

    private static JObject sendRequest(String params)
    {
        try
        {

            HttpResponseMessage response = Client.GetAsync(params).Result;

            if (response.IsSuccessStatusCode)
            {
                var jsonResponse = response.Content.ReadAsStringAsync().Result;
                return JObject.Parse(jsonResponse);
            }
            else
            {
                //do something else
            }
        }
        catch (Exception e)
        {
            //throw
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果响应采用Json映射格式,则可以正常工作:{"version":"1435775316000"}

但该服务只返回:1435775316000

同样,响应的标题说它在Json中.如何在Json.Net库中使用它.

编辑: 我可能应该问一下争辩我的案子的正确方法是什么.服务端的开发人员说返回一个整数是好的,认为它对服务实现更有用,并且必须创建一个json对象.我不同意,并且相信它应该返回一个合适的json对象,就像所有其他对所述服务的调用一样.我如何说服服务开发人员这样做?我问得太多了吗?我的意思是,在服务端更容易返回一个简单的int,但这意味着在我的最后我必须检查是否将其解析为对象或令牌json值.

java json json.net gson .net-4.5

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