小编JDC*_*JDC的帖子

REST API + 前端 - 验证最佳实践

我目前正在做一些有关验证的研究(例如用户表单)。

很明显,验证绝对必须在后端完成,以防止“恶意”或恶意输入等。

前端的验证还可以提高用户友好性,因为它通常更快,并且我们可以节省服务器往返时间。


我的问题如下:仅在服务器端进行验证并返回然后由前端显示的本地化错误消息是否是一种好的做法?

或者这是绝对不行的并且验证应该始终在双方进行?

即使完成了后端和前端验证,并且由于意外缺少前端验证而导致后端发生故障,响应是否应该包含要在前端显示的本地化信息?或者您会只显示一般性的“出了问题”消息吗?

不知怎的,我对来自 API 的本地化错误消息有一种不好的感觉。

api validation rest error-handling web-applications

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

如何使用Java中的Apache POI将元数据写入Excel工作簿

MetaData Excel
预期的文件属性

需要使用Apache POI将自定义数据写入excel文件。我正在使用POI 3.1.1版本jar。这是我的代码:

FileInputStream fis = new FileInputStream(sample);
workbook = new XSSFWorkbook(fis);
POIXMLProperties props = workbook.getProperties();

/* Let us set some core properties now*/
POIXMLProperties.CoreProperties coreProp = props.getCoreProperties();
coreProp.setCreator("Thinktibits"); //set document creator
coreProp.setDescription("set Metadata using Apache POI / Java");
coreProp.setCategory("Programming"); //category

/* Finally, we can set some custom Properies */
POIXMLProperties.CustomProperties custProp = props.getCustomProperties();
custProp.addProperty("Author", "Thinktibits");// String
custProp.addProperty("Year", 2014);     // Number Property
custProp.addProperty("Published", true); //Yes No Property
custProp.addProperty("Typist", "tika");
FileOutputStream fos = new FileOutputStream(sample);
workbook.write(fos);
fos.close();
Run Code Online (Sandbox Code Playgroud)

谁能帮助我在我的代码出问题的地方获得所需的自定义标签?

java excel apache-poi

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

Java Streams - 如果比较器存在则排序

我有一个类,可以指定一个可选Comparator.


由于Comparator是可选的,我必须评估它的存在并执行相同的流代码,有sorted()或没有:

if(comparator != null) {
    [...].stream().map()[...].sorted(comparator)[...];
} else {
    [...].stream().map()[...];
}
Run Code Online (Sandbox Code Playgroud)

问题:
如果没有代码重复,是否有更优雅的方法可以做到这一点?

注意:
默认Comparator不是一个选项,我只想保持我正在流式传输的值的原始顺序.

此外,这些元素已经映射在分拣点,所以我不能以某种方式引用流的根目录,因为我没有原始的元素了.

java sorting java-8 java-stream

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

TypeScript - getOwnPropertyNames() - 构造函数属性与 Getter/Setter

我对 TypeScript 很陌生,有一点我不太明白。

想象一下以下类:

export class PropertyInConstructor {

  constructor(public foo: boolean) {

  }
}
Run Code Online (Sandbox Code Playgroud)
export class PropertyWithGetSet {

  private _foo: boolean = false;

  get foo(): boolean {
    return this._foo;
  }

  set foo(theFoo: boolean) {
    this._foo = theFoo;
  }
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这两种方法都为我提供了一个可以使用new PropertyInConstructor().foo或访问的属性new PropertyWithGetSet().foo

我现在想要获取此类的现有属性(没有实例!)并尝试一下:

console.log(Object.getOwnPropertyNames(PropertyInConstructor.prototype));
console.log(Object.getOwnPropertyNames(PropertyWithGetSet.prototype));
Run Code Online (Sandbox Code Playgroud)

[“构造函数”]
[“构造函数”,“foo”]

为什么在构造函数中指定属性的调用没有添加“foo”属性?

是否缺少某些内容或有其他方式来获取这些属性?

reflection typescript

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

Java - 枚举 - 逻辑循环引用

想象一下以下组成的例子:

public enum Hand {
  ROCK(SCISSORS),
  PAPER(ROCK),
  SCISSORS(PAPER);

  private final Hand beats;

  Hand(Hand beats) {
    this.beats = beats;
  }
}
Run Code Online (Sandbox Code Playgroud)

我将收到Illegal forward reference前向引用的错误SCISSORS.


有没有办法在Java中处理这样的前向引用?

或者你会如何模拟这种情况,你在几个枚举值之间有一个逻辑循环引用?

java enums forward-reference circular-reference

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

加入多个IntStream

我试图得到某些整数,我将通过流来获取所有整数,但是,它们基本上被添加到我将在稍后使用的新整数流中.

为了填充新的整数流,我创建了多个IntStream,然后使用IntStream构建器将它们附加到新的IntStream,如下所示:

有没有更好的方法来解决这个问题:

    IntStream rightSide = IntStream.range(8, this.rows.getSlotAmount()).map(value -> value + 9);
    IntStream leftSide = IntStream.range(0, this.rows.getSlotAmount()).map(value -> value % 9);
    IntStream top = IntStream.range(0, 9);
    IntStream bottom = IntStream.range(this.rows.getSlotAmount() - 9, this.rows.getSlotAmount());

    IntStream.Builder slots = IntStream.builder();

    rightSide.forEach(slots::add);
    leftSide.forEach(slots::add);
    top.forEach(slots::add);
    bottom.forEach(slots::add);

    slots.build().forEach(this::methodReference);
Run Code Online (Sandbox Code Playgroud)

java java-stream

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

没有阴影的材料设计按钮

我最近开始了 android 开发,但我有点挣扎。我阅读了有关创建可绘制对象等的不同文章和教程。


现在的情况

我创建了以下按钮:

社交登录按钮

使用以下代码:

    <android.support.v7.widget.AppCompatButton
        android:id="@+id/login_btn_facebook"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:drawableStart="@drawable/ic_btn_login_facebook"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:text="Continue with Facebook"
        android:textColor="#fff"
        app:backgroundTint="#3b5998"/>

    <android.support.v7.widget.AppCompatButton
        android:id="@+id/login_btn_google"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:drawableStart="@drawable/ic_btn_login_google"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:text="Continue with Google"
        app:backgroundTint="#ffffff" />
Run Code Online (Sandbox Code Playgroud)

现在我实际上只需要一个小的改变:
我不想有海拔。我希望按钮是“平坦的”,并且仅在单击时显示阴影效果。

有没有一种简单的方法可以做到这一点?

已经谢谢了!


更新:
我需要将API 级别 19作为最低 SDK 版本。

android button flat material-design

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

仅具有静态方法的类-是否为Enum

一次又一次,我遇到了一个只包含静态方法的实用程序类的情况。


问题不是关于自己拥有这样的类的事实,而是关于实用程序类的辩论。我们只是假设有一个用例,该类有意义。


现在,我看到了防止实例化/扩展的不同可能性:

  • 私有构造函数和最终类
  • 使用枚举而不是类

最佳做法是什么?您能否详细说明这两种可能性的优点/缺点?


就我个人而言,我更喜欢枚举解决方案,因为它完全防止了开箱即用的实例化和扩展,但是也许我错了。

已经谢谢你了!

java enums static

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

在 SASS 中提取部分边框属性

给定 SASS 变量中的有效 CSS 边框属性值(scss 语法中的代码),我需要知道给定边框的宽度和颜色。

这可以使用 a 来完成,@function因为我多次需要此功能。

输入可能如下所示(如果缺少边框属性之一无关紧要,因为这仍然是有效的 CSS):

  • 2px dashed white
  • 1px #333
  • solid black

不幸的是,我什至不知道从哪里开始。我想拆分列表然后返回相应的值,但我不知道如何确定不同的类型,例如我怎么知道它的边框宽度值?


这就是我目前卡住的地方:

@function getBorderWidth($border) {
    @each $part in $border {
        @if(WHAT IS THE CONDITION?) {
            return $part;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助!

css split border sass

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

Strawberry Perl-在Windows中搜索和替换

我正在尝试执行以下命令:

perl -pi -e 's,vaadin-element,color-picker,g' *.* demo/* test/* src/* theme/*/*
(遵循文件)

不幸的是,我得到的以下错误似乎使我使用的Pearl窗口分布与命令有关,因为出现以下错误:

Can't open *.*: Invalid argument.
Can't open demo/*: Invalid argument.
Can't open test/*: Invalid argument.
Can't open src/*: Invalid argument.
Can't open theme/*/*: Invalid argument.
Run Code Online (Sandbox Code Playgroud)

关于如何解决该问题的任何建议?先感谢您!

免责声明:我以前从未使用过Pearl,而且绝对没有经验。

windows perl replace strawberry-perl

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