小编Adr*_*ith的帖子

如何获取Wicket共享资源的URL?

网页设计师给了我HTML,看起来像:

<div .... style="background: transparent url(xxx.png) 170px center no-repeat">
Run Code Online (Sandbox Code Playgroud)

不幸的是,图像的内容xxx.png是由软件生成的,所以我做了一个WebResource并使用以下策略生成资源的URL,然后我style=使用Wicket 将其嵌入到属性中AttributeModifier.

// App initialization code
String resourceName = ....;
getSharedResources().add(resourceName, myWebResource);

// Creating the widget
String url = getServletContext().getContextPath()
    + "/resources/org.apache.wicket.Application/" + resourceName ;
String style = "background: transparent url(" + url + ") 170px center no-repeat";
div.add(new AttributeModifier("style", new Model<String>(style)));
Run Code Online (Sandbox Code Playgroud)

当我使用Eclipse在本地测试时,这可以正常工作,但是:

  • 当我在生产中安装它时,我希望将Apache作为Jetty的代理,以便上下文根不可见,即Apache将请求转发/foo到Jetty上/context-root/foo.
  • 总的来说,我不认为这很优雅.我确定我在这里复制Wicket代码?

我理解Wicket只使用相对URL解决了上下文根和Apache代理的这个问题.这将是我怀疑的最优雅的解决方案.但是,如果我有例如一个,IndexedParamUrlCodingStrategy那么URL可以是任意长度,我不知道有多少..要包括回来/resources.

编辑:当前的解决方案是使用上面的代码示例中的绝对URL,并在Apache中(a)像以前一样重写/context-root/*/*(b)然后将上下文根添加到所有请求(c)转发到Jetty.这样,大多数URL可以没有上下文根,但是某些URL(对我的资源)可以具有上下文根,并且没有问题.但我不喜欢这个解决方案!

wicket

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

保持旧的过时代码的反模式的名称

最近我看了一些我在工作中致力于我们的版本控制系统的代码,我发现它已被替换了一堆(没关系),但旧版本仍在那里,注释掉了.

我猜这个家伙对于删除它感觉有点"不安全",因此将其留在那里注释掉了.但是,这并不是必需的,因为我们正在使用版本控制.(旧版本错了,所以它不会像以后那样需要.)

这些stackoverflow问题处理的问题是,是否留下这样的旧代码是一个好主意:

但是,我的问题是:这个问题是否有一个术语,或者在与同事谈论它时可以引用一个"反模式名称"?

terminology anti-patterns

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

可以在java中将java.lang.Class对象与==进行比较吗?

可能重复:
Java是否保证Object.getClass()== Object.getClass()?

如果我有一个类如

Class<? extends MyObject> aClass = ...;
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

if (aClass == MySubObject.class) { ... }
Run Code Online (Sandbox Code Playgroud)

或者我必须这样做

if (aClass.equals(MySubObject.class)) { ... }
Run Code Online (Sandbox Code Playgroud)

此外,进一步知道答案,我很想知道一个参考,即这是什么定义.

==如果可能,我更喜欢使用,因为我发现它更具可读性和更快.(显然它不是那么可读,或者更快,但是,如果有更简单的解决方案,为什么还要使用更复杂的解决方案.)

java

6
推荐指数
2
解决办法
4824
查看次数

XSLT 2.0产生错误:"上下文项未定义"

我们使用Altova Stylevision生成XSLT 2.0文件.我们使用Saxon 9 for Java来执行这些XSLT文件.这已经好几年了,唉,我们都没有真正了解XSLT.

现在我们有错误:

Error at /xsl:stylesheet/xsl:function[9]
XPDY0002: Axis step child::element(item, xs:anyType) cannot be used here:
  the context item is undefined
Run Code Online (Sandbox Code Playgroud)

第9个功能是:

<xsl:function name="sps:GoogleChartDataSourceUnitCount" as="xs:string">
  <xsl:sequence select="concat(string-join(item/string(if ( number($XML/report/calculation-data[@data-source-name = $DataSourceParent]/item/variable[@name=&apos;unit_count&apos;]/@value) &lt; 0 ) then 0 else round-half-to-even(number(variable[@name=&apos;unit_count&apos;]/@value),2)),&apos;,&apos;),&apos;&amp;chxl=0:|&apos;,string-join(item/variable[@name=&apos;month&apos;]/@value,&apos;|&apos;),&apos;|2:||Min&amp;chds=0,&apos;,string(round-half-to-even( max(item/(number(variable[@name=&apos;unit_count&apos;]/@value)))+1 , 0 )),&apos;&amp;chxr=1,0,&apos;,string(round-half-to-even( max(item/(number(variable[@name=&apos;unit_count&apos;]/@value)))+1 , 0 )))"/>
</xsl:function>
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么事?

xslt altova saxon xslt-2.0

6
推荐指数
2
解决办法
7331
查看次数

如何在Springfox Swagger提供的Swagger/v2/api-docs中启用CORS头?

我的项目中有以下文件:

@Configuration
@Order(Ordered.LOWEST_PRECEDENCE)
public class SwaggerConfig {

    @Bean
    public Docket apiSwagger2Documentation() { .... }
}
Run Code Online (Sandbox Code Playgroud)

在Application.java中有:

@SpringBootApplication
@ComponentScan(basePackages = { ... })
@EnableSwagger2
public class Application {
    ...
}
Run Code Online (Sandbox Code Playgroud)

Swagger JSON可用/v2/api-docs,工作正常.

我想做的是为该端点启用CORS头.

对于我自己的控制器,我已经添加@CrossOrigin到控制器类,那些API然后有CORS头,工作正常.但是对于Swagger JSON URL我自己没有编写控制器,所以我不能使用那个注释.

我已经添加了以下方法SwaggerConfig,如Spring FrameworkCORS支持中的 "全局CORS配置"中所述.

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        System.out.println("*** corsConfigurer called");
        return new WebMvcConfigurerAdapter() {
            @Override public void addCorsMappings(CorsRegistry registry) {
                System.out.println("*** addCorsMappings called");
                registry.addMapping("/v2/api-docs");
            }
        };
    }
Run Code Online (Sandbox Code Playgroud)

打印两个打印语句,因此调用该方法.但是当我用curl调用URL时:

curl -H "Origin: foo.com"  \
   -H "Access-Control-Request-Method: …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc spring-boot springfox

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

setNamespaceAware(true) 有什么缺点吗?

我使用以下代码在 Java 中解析 XML 文档:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Element el = db.parse(file).getDocumentElement();
Run Code Online (Sandbox Code Playgroud)

但是,在解析使用名称空间的 XML 文档时,出现错误:

org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create
or change an object in a way which is incorrect with regard to namespaces.
        at org.apache.xerces.dom.ElementNSImpl.setName(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我通过添加以下行解决了这个错误:

dbf.setNamespaceAware(true);
Run Code Online (Sandbox Code Playgroud)

现在一切正常。

在我看来,将解析器设置为命名空间感知将是一件完全积极的事情。据我所知,它仍然可以很好地处理“vanilla”非命名空间文档,没有任何缺点。

但是,如果是这样的话,那么他们为什么要把它作为一个选项,为什么false默认情况下呢?

所以我的问题是:我在我的软件中使用的一个好的默认设置是什么?我应该始终将其设置为true(因为这些 API 的设计者通过将其作为选项提供而搞砸了)还是应该false在某些情况下将其保留,因为每个值都有一些优点?如果是这样,它的优点是false什么?

java dom jaxp xml-namespaces

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

@ NotNull,@ Nonnull等在IntelliJ IDEA中均不起作用

我尝试用以下方式注释字段

  • org.checkerframework.checker.nullness.qual.NonNull
  • org.jetbrains.annotations.NotNull
  • javax.annotation.Nonnull

并且在所有情况下,为其分配null不会引起IntelliJ 2016.2的投诉。

public class GreetingController {
    @NotNull Integer x = 3;
    public void foo() { x = null; }
}
Run Code Online (Sandbox Code Playgroud)

根据IntelliJ,所有这些都可以正常编译。

IntelliJ的此页面特别指出:“ IntelliJ IDEA即时显示了问题,因此您可以在编辑器中直接查看检查结果。” 我什至将示例代码(public class TestNullable)复制到了我的编辑器中,它不会产生任何错误。

IntelliJ的另一个页面指出您可以更改其响应的注释。所以我选择了javax.annotation.Nonnull,并确保那是我在代码中使用的那个,仍然没有运气。

明确地说,我希望提供的是我所希望的,并且是我所理解的是,编辑器窗口/编译器使我警惕了这个问题(我不是在寻找运行时检查,NullPointerException在运行时已经可以正常工作。)

如果它不能实时运行,我尝试了“重建项目”。

我确定这一定可行,我做错了什么?

我已经上传了一个无法在此处使用的示例:ZIP下载

intellij-idea

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

有没有办法在XSD中将字符串限制为ASCII?

虽然XSD Schema描述的XML文件通常可以包含任何unicode字符,但是有些字段只允许使用ASCII.(因为这些字符串将被传递到另一个只接受ASCII的系统.)

有没有办法在XSD中指定?

我想有一个包含所有可能的ASCII字符的正则表达式,但我觉得必须有更好的方法.

xsd

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

为什么XML中的CDATA语法看起来如此奇怪?

CDATA在XML中使用如下:

<my-tag><![CDATA[my-data]]></my-tag>
Run Code Online (Sandbox Code Playgroud)

这是一种非常不寻常的语法.当我第一次看到它时,我认为它是我尚未学习的一些通用XML构造的特定形式.但是,据我所知(XML CDATA规范),它不是.

我的问题:有没有理由为什么CDATA部分看起来像它,例如是一些SGML的特殊情况?或者有些语言设计师只是想到有一天"我会在CDATA之前用支架制作一个CDATA部分,之后是一个支架,一个感叹号,用尖括号包围."

xml cdata

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

只有登录Wicket用户可用的可收藏页面的方法

我有一堆页面,只有在用户登录时才能访问.因此URL有意义,并且用户可以将它们加入书签,我已经在Wicket中创建了可收藏的URL.

现在问题出现了,如果用户来查看这些页面,但还没有登录.PageParameters调用我的页面上的构造器.

我的方法是:

  • 对于应该只能登录但可添加书签的所有页面,if在此构造函数中放置一个语句以测试用户是否已登录.
  • 如果用户未登录:
    • 将(Page)this.class(b)PageParameters存储在会话中的特殊位置
    • setReponsePage 成为我的登录页面
    • 在登录页面中,如果登录成功,请检查会话中是否设置了这些特殊属性,如果是,则将setResponsePage其作为所需可加书签URL的类/参数

这种方法是否正确?这似乎是一些额外/手动工作(尽管不是太多!),但Wicket提供了许多"开箱即用"的有用东西:所以我的问题是:这是必要的还是有一些Wicket设施我'我不知道我可以利用哪些?

wicket

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

退出时删除文件

也许我错了,但我确信UNIX和C标准库提供了一些工具来让操作系统在进程退出后删除文件.但我不记得它叫什么(或者我想象它).在我的特定情况下,我想从perl访问此功能.

Java有这个deleteOnExit功能但我知道删除是由JVM完成的,而不是操作系统,这意味着如果JVM不正常地退出(例如电源故障),那么文件永远不会被删除.

但我理解我正在寻找的设施(如果它存在),因为它是由操作系统提供的,操作系统会查找文件的删除,可能是在电源故障等情况下在OS启动时进行一些清理工作,当然在进程不洁的情况下进行清理.

perl

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

对于不存在的REST资源,什么时候返回404,什么时候返回403?

我熟悉这个逻辑,如果你想用用户名和密码验证某人,你应该返回同样的错误,不管用户名是否找到,或者密码是否错误。这个想法是,如果您返回单独的“未找到用户”和“找到用户,但密码错误”错误,攻击者可以尝试所有用户名并找出哪些用户名有效,然后将他们的字典攻击集中在这些用户名上.

使用 REST 服务,我有一个只有某些用户可以访问的资源,我们称之为/foo/{id}。所以有各种各样的情况:

  1. 用户尝试访问/foo/4并且他们有权访问,他们显然会得到 200 响应和资源。

  2. 用户尝试访问/foo/3但它不存在。(如果它确实存在,我不知道他们是否可以访问它,因为它不存在。想想 Facebook 上不存在的照片,照片只有存在时才具有所有权信息。)

  3. 用户尝试访问/foo/4,它存在,但他们没有访问权限。

所以我的问题是,在情况 2 和 3 中返回什么返回码?据我所知,有以下选项:

  1. 情况 2 返回 404,情况 3 返回 403。但这意味着攻击者可以找出存在哪些对象,类似于第一个示例中的密码示例。

  2. 所有例子都返回404,毕竟从用户的角度来看,他们无权访问的资源“不存在”,如果他们列出所有他们有权访问的资源,该资源将不在列表中.

  3. 所有示例都返回 403。

你会怎么办?这里的标准是什么?

rest

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