小编Kas*_*rer的帖子

使用Java Stream计算项目列表中日期的出现次数

我有一个带有(java.util.)Date属性的项目列表,我想为从最早的日期到现在的每一天创建一个DataSeriesItem .这是一个带有时间轴的图表系列.

该DataSeriesItem的创建将如下所示:
DataSeriesItem seriesItem = new DataSeriesItem(Date, occurrenceCount);
其中occurrenceCountDate属性与该日匹配的Items的数量.第一个参数也可以是类型java.time.Instant

我已经设法找到一种有效的方法,但我确信我的方法非常糟糕,并且可以用一个流来完成,也许两个.但是,我是溪流的初学者,不能用我的知识来做.

这有可能与流?它怎么可能会像
我不是让你真正做到我的整个重新执行,但只有我指向正确的streamfunctions和映射,你会使用,而加分它的一个例子.

这是我丑陋的解决方案:

List<?> items = myItems;
Collection<Date> foundDates = new HashSet<>();

for (Object item : items) {
    foundDates.add((Date)getPropertyValueFromItem(item, configurator.getDateProperty()));
}

//======  This is the part I am asking about ======//

Map<Instant, Integer> foundInstants = new HashMap<>();
foundDates.stream().sorted(Date::compareTo).forEach(date -> {
    Calendar c = Calendar.getInstance();
    c.clear(); // clear nanoseconds, or else equals won't work!
    c.set(date.getYear()+1900, date.getMonth(), date.getDate(), 0, 0, 0);
    if(!foundInstants.containsKey(c.toInstant())){ …
Run Code Online (Sandbox Code Playgroud)

java datetime java-8 java-stream

11
推荐指数
2
解决办法
414
查看次数

使用PolymerTemplate的LoginView无法识别错误参数

我有一个LoginView,我基本上从面包店入门项目复制.

当我运行面包店应用程序并尝试使用错误的凭据登录时,会出现另一个带有错误消息的div.

但是,此错误消息div不会出现在我的视图中.因为我已经适应了模板,我们的企业设计的,但我记得,这个问题已经存在的两个文件时LoginView.java,并login-view.html仍然从面包房应用程序的精确副本.我仔细检查过.error不只是被我自己的css隐藏 - 在DOM中不存在div.error.

访问时调试LoginView /login?error(访问login?error=true是相同的)表明它无法识别任何queryParameters! - >为什么?


我的应用调试: 调试截图


Bakery App调试: 调试截图2


我的(Spring)安全配置在登录方面也是一样的:

.and()
.formLogin()
.loginPage(("/login")).permitAll()
.loginProcessingUrl("/login")
.failureUrl("/login?error")
Run Code Online (Sandbox Code Playgroud)

编辑:根据评论中的要求,我将添加模板的相关部分.但是,错误是100%不在模板中 - 正如我在调试中看到的那样,错误发生LoginView.java在afterNavigation方法中.

<dom-module id="login-view">
  <template>
    <style include="shared-styles">
        .....
    </style>
        .....
            <template is="dom-if" if="[[error]]">
              <div class="error">
                <iron-icon icon="vaadin:exclamation-circle-o" class="error__icon"></iron-icon>
                <p class="error__text">
                  Der Benutzername und/oder das Passwort stimmt nicht. Bitte überprüfe deine Angaben und versuche es erneut.
                </p>
              </div>
            </template>
      ....
  </template>

  <script>
    class LoginView extends Polymer.GestureEventListeners(Polymer.Element) {
        static get is() {
            return 'login-view'; …
Run Code Online (Sandbox Code Playgroud)

query-parameters vaadin vaadin-flow

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

Swagger-codegen生成的模型反序列化问题 - 无法识别的字段"@id"

我正在尝试使用swagger-codegen生成的代码来使用我的REST服务,这是在我的swagger.json中定义的(由服务器端由springfox 2.9.0提供)

我正在生成api,模型和支持文件.
但每次我尝试使用GET api时,都会发生错误:

avax.ws.rs.client.ResponseProcessingException: Problem with reading the data, class xxx.xxx.generatedmodels.MyEntity, ContentType: application/json;charset=UTF-8.
....
Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "@id" (Class xxx.xxx.generatedmodels.MyEntity), not marked as ignorable

我的猜测是生成的Model类需要类注释@JsonIdentityInfo(generator = JSOGGenerator.class),就像它们在服务器端模型上一样.(也许也许@JsonIgnoreProperties(ignoreUnknown = true)?)
这个假设是否正确?

如果是,那么有没有办法配置swagger-codegen在每个模型上添加这个注释?

如果不是,我该怎么办才能让ApiClient反序列化收到的实体?

我的swagger-codegen配置如下所示:

<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>https://example.com/v2/api-docs</inputSpec>
                <language>java</language>
                <generateApis>true</generateApis>
                <generateModels>true</generateModels>
                <generateSupportingFiles>true</generateSupportingFiles>
                <generateModelDocumentation>false</generateModelDocumentation>
                <generateModelTests>false</generateModelTests>
                <modelPackage>xxx.xxx.generatedmodels</modelPackage>
                <apiPackage>xxx.xxx.generatedapi</apiPackage>
                <invokerPackage>xxx.xxx.generatedinvoker</invokerPackage>
                <configOptions>
                    <dateLibrary>java8</dateLibrary>
                    <sourceFolder>src/main/java</sourceFolder>
                    <java8>true</java8>
                </configOptions>
                <library>jersey2</library>
                <output>../generated-client</output>
                <groupId>xxx.xxx</groupId>
                <artifactId>generatedapiclient</artifactId>
                <artifactVersion>1.0.0</artifactVersion>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

响应看起来像这样(严重缩短.有许多对象属性也有"@id".这个例子匹配swagger.json进一步向下): …

java deserialization swagger jsog swagger-codegen

6
推荐指数
0
解决办法
857
查看次数

Hibernate具有连接类级联问题的多对多问题

我和Many-to-Many班级之间有关系.因为我想获得有关辅助表的其他信息,所以我必须创建一个帮助类,如下所述:使用JPA和Hibernate时,使用额外列映射多对多关联的最佳方法FooBarFooBar

我创建了一个Foo,并创建了一些条形图(保存到DB).当我然后使用其中一个条添加到foo

foo.addBar(bar);            // adds it bidirectionally
barRepository.save(bar);    // JpaRepository
Run Code Online (Sandbox Code Playgroud)

然后创建FooBar的DB条目 - 正如预期的那样.

但是,当我想再次从foo中删除相同的栏时,使用

foo.removeBar(bar);         // removes it bidirectionally
barRepository.save(bar);    // JpaRepository
Run Code Online (Sandbox Code Playgroud)

然后,不会从数据库中删除先前创建的FooBar条目.通过调试,我看到foo.removeBar(bar);确实删除了双向.没有异常被抛出.

难道我做错了什么?我很确定它与Cascading选项有关,因为我只保存吧.


我尝试过的:

  • 添加orphanRemoval = true@OneToMany - 注释,但没有用.我认为这是正确的,因为我不删除 Foo和Bar,只删除他们的关系.

  • 从@OneToMany注释中排除CascadeType.REMOVE,但与orphanRemoval相同我认为这不适用于这种情况.


编辑: 我怀疑在我的代码或模型中必须有一些东西与我的orphanRemoval混淆,因为现在已有2个答案说它有效(带orphanRemoval=true).

最初的问题已得到解答,但如果有人知道什么可能导致我的孤儿无法工作,我会非常感谢您的意见.谢谢


代码:Foo,Bar,FooBar

public class Foo {

    private Collection<FooBar> fooBars = new HashSet<>();

    // constructor omitted for brevity

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "foo", fetch = FetchType.EAGER)
    public Collection<FooBar> getFooBars() …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa cascade hibernate-onetomany

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

带有行索引的 Vaadin 流网格

如何将行索引列添加到网格中,该列不会按照用户对行进行排序?

该解决方案不得包括对任何聚合物模板的更改,而应在 java 中完成。

vaadin vaadin-grid vaadin-flow vaadin14

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

Vaadin 8 - 有没有办法将 CheckBoxGroup 分成 2 行?

我有一个 CheckBoxGroup 显示 8 个项目。默认演示文稿是垂直的,这在我的布局中看起来不太好。

但是如果我将演示文稿设置为水平使用

checkBoxGroup.addStyleName(ValoTheme.OPTIONGROUP_HORIZONTAL);
Run Code Online (Sandbox Code Playgroud)

那么8个项目没有足够的空间。所以我被迫使用垂直样式,但我对此并不满意。

有没有办法水平显示单个 CheckBoxGroup,但使用 2(或更多)行?

编辑:
我通过将复选框的样式设置为向左浮动(带有组的水平显示),找到了解决问题的快速方法。它现在在第一行显示 6 个复选框,在第二行显示 2 个。它仍然不漂亮,但比其他 2 个选项更好。我仍然期待收到更好的解决方案!(如果没有,那就这样吧,但至少我知道这是不可能的)

vaadin vaadin8

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

Vaadin 8 - 如何绑定 RadioButtonGroup 的项目?

我正在制作一个包含许多 TextFields 和 ComboBoxes 和 CheckBoxes 的视图,其中它们的值由单个 Binder 处理。没有问题。

但是:现在我想在视图中添加 3 个 RadioButton,这些值应该来自同一个 Binder。每个 RadioButton 绑定到不同的布尔字段,这些字段中只有 1 个可以同时为真(RadioBoxes 的完美要求)。

问题 #1:没有用于简单 RadioButton 的组件(就像 CheckBox 一样),我只能找到 RadioButtonGroup。所以我想我将不得不和那个人一起工作。

问题#2:在Vaadin Docs 中,它特别指出:

CheckBoxGroup组件的优点在于,由于它维护单个复选框对象,因此您可以轻松获取当前选定项的数组,并且您可以轻松更改单个组件的外观并将其与 Binder 一起使用。

但是我找不到绑定RadioButtonGroup项目的方法,也找不到任何地方提到它。

有没有办法在 RadioButtonGroup 中绑定单个项目?
如果没有,那么我担心我将不得不使用 CheckBoxes,其中 RadioButtons 将是一种更合乎逻辑的方法。

下面是一些代码来演示我想要完成的事情:

// FooBar Class
private boolean foo = true;
private boolean bar = false;
private boolean fooBar = false;
// constructor, getters and setters
Run Code Online (Sandbox Code Playgroud)
// My View
Binder<FooBar> binder = new Binder<>();
binder.setBean(new …
Run Code Online (Sandbox Code Playgroud)

java vaadin vaadin8

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

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

Vaadin Flow中的可滚动布局

在Vaadin Flow中,不存在本质上是可滚动布局的组件。在Vaadin 8中,这是由专家小组完成的。

有什么方法可以在Vaadin Flow中实现可滚动组件?

scrollview vaadin vaadin-flow

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

Vaadin 14 - Grid::setClassNameGenerator 不起作用

我在为网格中的每一行设置背景颜色时遇到问题。我使用 setClassNameGenerator,但这不起作用。但是,如果我为整个网格设置 className,那么我可以看到一些结果。最后,我想根据某些条件为行着色,但现在我只是硬编码一个“失败”的类,看看着色是否有效。


这是我的 CSS 代码:

我的 CSS


执行此代码段不会改变任何内容

执行此代码段时没有结果


但是,这使整个背景按预期变黄,因此 CSS 导入没问题。

这有效


任何帮助都会很棒。谢谢

java vaadin

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

Vaadin 为版本控制添加什么

我们正在使用 Vaadin 14. 我们应该将项目中的哪些文件夹提交给版本控制?文件夹 node_modules 非常大,非常耗时,我们应该提交这个吗?

svn version-control vaadin vaadin14

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