小编lma*_*gon的帖子

SimpleUrlHandlerMapping的Java配置(Spring启动)

我有一个现有的Spring Web应用程序,它使用两个扩展AbstractController的控制器.我想将Spring Boot集成到应用程序中,以便我们可以将其作为独立应用程序运行.

我遇到了一个问题,因为Spring没有将调用转发给我的控制器.如何将控制器映射到"/ app/*"之类的URL模式?

SampleController.java

@Controller("myController")
public class SampleController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        response.getWriter().print("Hello world!");
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

Application.java

@EnableAutoConfiguration
@Configuration
@ComponentScan
public class Application {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public SimpleUrlHandlerMapping sampleServletMapping() {
        SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();

        Properties urlProperties = new Properties();
        urlProperties.put("/index", "myController");

        mapping.setMappings(urlProperties);

        return mapping;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序时,我收到以下消息:

INFO  [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] Mapped URL path [/index] onto handler 'myController' …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot

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

将DataTable对象从JavaScript传递给Java

我在客户端使用Google Visualization API,并创建了一个DataTable对象.然后我想将它传递给我的服务器并通过Spreadsheet API上传到电子表格.可能最好的方法是使用JSON,因此我使用方法toJSON()将其转换并通过POST将其发送到我的服务器.我尝试使用这两个类:

现在我注意到,这两个类不兼容,至少不是JSON.JavaScript类例如转换为:

{"cols":[
         {"id":"Col1","label":"","type":"string"}
         {"id":"Col2","label":"","type":"date"}
        ],
 "rows":[
         {"c":[{"v":"a"},{"v":"Date(2010,10,6)"}]},
         {"c":[{"v":"b"},{"v":"Date(2010,10,7)"}]}
        ]
}
Run Code Online (Sandbox Code Playgroud)

但Java端DataTable有不同的参数名称,我使用的Gson有不同的类型值:

cols -> columns
c -> cells
v -> value

type:"string" -> type:"TEXT"
type:"number" -> type:"NUMBER"
Run Code Online (Sandbox Code Playgroud)

而且我担心更多的不兼容性.

那么..我怎样才能将JavaScript DataTable转换为Java对象DataTable?

javascript java json google-api google-visualization

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

Logstash-> Elasticsearch-更新非规范化数据

用例说明

我们有一个关系数据库,其中包含有关我们日常运营的数据。目的是允许用户使用全文本搜索引擎来搜索重要数据。数据经过规范化,因此不是进行全文查询的最佳形式,因此,其想法是对数据的一部分进行规范化,然后将其实时复制到Elasticsearch,这使我们能够创建快速而准确的搜索应用程序。

我们已经有了一个启用数据库操作(插入,更新,删除)事件搜索的系统。事件仅包含已更改的列和主键(在更新中,我们没有得到整行)。Logstash已经为每个事件得到通知,因此这部分已经得到处理。


实际问题

现在我们要解决我们的问题。由于计划是对数据进行非规范化,因此我们必须确保将父对象的更新传播到Elasticsearch中的非规范化子对象。我们如何配置logstash来做到这一点?

假设我们Employees在Elasticsearch中维护一个列表。每个Employee都分配给一个Company。由于数据是非规范化的(出于快速搜索的目的),每个数据Employee还带有的名称和地址Company。更新会更改a的名称Company- 我们如何配置logstash来更新Employees分配给的所有公司名称Company


补充说明

@Darth_Vader:我们面临的问题是,我们得到一个事件a Company发生了变化,但是我们希望Employee在Elasticsearch中修改类型的文档,因为它们本身携带有关公司的数据。您的答案期望我们会为每一个事件Employee,但事实并非如此。

也许这将使其更加清晰。我们在Elasticsearch中有3名员工:

{type:'employee',id:'1',name:'Person 1',company.cmp_id:'1',company.name:'Company A'}
{type:'employee',id:'2',name:'Person 2',company.cmp_id:'1',company.name:'Company A'}
{type:'employee',id:'3',name:'Person 3',company.cmp_id:'2',company.name:'Company B'}
Run Code Online (Sandbox Code Playgroud)

然后在源数据库中发生更新。

UPDATE company SET name = 'Company NEW' WHERE cmp_id = 1;
Run Code Online (Sandbox Code Playgroud)

我们在logstash中得到一个事件,它表示如下内容:

{type:'company',cmp_id:'1',old.name:'Company A',new.name:'Company NEW'}
Run Code Online (Sandbox Code Playgroud)

然后,应将其传播到Elasticsearch,以使最终的雇员为:

{type:'employee',id:'1',name:'Person 1',company.cmp_id:'1',company.name:'Company NEW'}
{type:'employee',id:'2',name:'Person 2',company.cmp_id:'1',company.name:'Company NEW'}
{type:'employee',id:'3',name:'Person 3',company.cmp_id:'2',company.name:'Company B'}
Run Code Online (Sandbox Code Playgroud)

请注意,该字段已company.name更改。

denormalization event-sourcing elasticsearch logstash

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

打开切片切片

我很好奇解压缩切片并将它们作为参数发送到可变参数函数.

假设我们有一个带可变参数的函数:

func unpack(args ...interface{})
Run Code Online (Sandbox Code Playgroud)

如果我们不想传递它所使用的接口片段,那么如果我们解压缩它并不重要:

slice := []interface{}{1,2,3}
unpack(slice) // works
unpack(slice...) // works
Run Code Online (Sandbox Code Playgroud)

如果我们有一片切片,它会变得棘手.这里编译器不允许我们传入一个解压缩版本:

sliceOfSlices := [][]interface{}{
    []interface{}{1,2},
    []interface{}{101,102},
}
unpack(sliceOfSlices) // works
unpack(sliceOfSlices...) // compiler error
Run Code Online (Sandbox Code Playgroud)

错误说:

不能使用sliceOfSlices(type [] [] interface {})作为类型[] interface {}在解压缩的参数中

我不知道为什么会发生这种情况,因为我们可以清楚地将一个[]interface{}类型传递给函数.如何使用aspacked内容sliceOfSlices作为参数调用方法解压缩?

游乐场示例:https://play.golang.org/p/O3AYba8h4i

variadic-functions go slice

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

春季更改日期输入格式

我正在尝试创建一个表单,它将发送一个带有时间戳的对象.现在,输入格式必须是yyyy-MM-dd HH:mm:ss,我希望以格式输入时间戳dd.MM.yyyy HH:mm- 如何更改输入格式?

对象类:

public class Test {
    private Timestamp dateStart;

    public Timestamp getDateStart() {
        return dateStart;
    }
    public void setDateStart(Timestamp dateStart) {
        this.dateStart = new Timestamp(dateStart.getTime());
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器方法:

@RequestMapping(value="test", method = RequestMethod.POST)
public View newTest(@ModelAttribute("test") Test test, Model model) {
    //save the Test object
}
Run Code Online (Sandbox Code Playgroud)

jsp表单:

<form:form action="service/test" method="post" modelAttribute="test">
    <form:input type="text" path="dateStart" />
</form:form>
Run Code Online (Sandbox Code Playgroud)

当格式不正确时,我收到此错误:

Field error in object 'test' on field 'dateStart': rejected value [22.05.2012 14:00]; codes [typeMismatch.test.dateStart,typeMismatch.dateStart,typeMismatch.java.sql.Timestamp,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc java-ee

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

Wicket - 在多个位置显示相同的文本

我正在使用Wicket第一次构建我的网站,我想创建一个门户网站,其中用户名将显示在多个位置(用户菜单,标题,可能在页面上的其他位置......).Wicket显然不喜欢同样的标签wicket:id,因为我得到:

组件[Component id = userName]已经呈现.您只能在渲染阶段渲染一次.

是否有其他方法可以在不同的地方显示相同的动态文本,而无需为每个地方创建新标签?

java wicket

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

Neo4j匹配与集合中所有节点相关的节点

我有一个标签图,它们彼此相关.我的目标是创建一个Cypher查询,它将通过1或2跳返回与输入标签数组相关的所有标签.

我提出了一个查询,这个查询并不像预期的那样有效.

MATCH (t:Tag)
WHERE t.name IN ["A", "B", "C"]
WITH t
MATCH (a:Tag)-[:RELATED*1..2]-(t)
RETURN DISTINCT a;
Run Code Online (Sandbox Code Playgroud)

此查询首先找到的节点A,B,C然后搜索代码,该相关的A,B C通过1个节点或更小.

我想要做的是找到与所有三个节点(A,B C)相关的标签.


我知道我可以连接MATCHWITH声明,并做这样的事情:

MATCH (t:Tag)-[:RELATED*1..2]-(a:Tag)
WHERE t.name="A"

WITH DISTINCT a
MATCH (t:Tag)-[:RELATED*1..2]-(a)
WHERE t.name="B"

WITH DISTINCT a
MATCH (t:Tag)-[:RELATED*1..2]-(a)
WHERE t.name="C"
...
RETURN DISTINCT a;
Run Code Online (Sandbox Code Playgroud)

但它运行非常缓慢,当输入的数量增加标签(在这种情况下,只有3输入标签:A,B,C).


那么有没有办法在一个查询中创建它,类似于我的第一次尝试?

neo4j cypher

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