小编Mic*_*ael的帖子

在Tomcat中设置CORS头

我有一个由Tomcat托管的静态网站.

如何为我的网站设置标题,如:Access-Control-Allow-Origin: *

它们都是静态文件,而不是任何servlet应用程序.

tomcat header cors

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

如何在Velocity中进行内联if/otherwise(又名三元运算符)?

在纯Java中,我可以这样做:

value = (a > b) ? a : b;
Run Code Online (Sandbox Code Playgroud)

而在Velocity中,长形式将是:

#if($a > $b)          
    #set($value = $a)
#else
    #set($value = $b)
#end
Run Code Online (Sandbox Code Playgroud)

Velocity中有简短形式吗?我希望能够做一个if/other inline.

java velocity if-statement

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

使用相同的字符串文字而不是最终变量?

我遇到过一个包含字符串文字"foo"的多种用法的类.

我想知道的是,使用这种方法有什么好处和影响(在对象创建,内存使用和速度方面),而不是将String声明为final并用最终变量替换所有文字?

例如(虽然显然不是真正的单词用法):

private static final String FINAL_STRING = "foo";

public void stringPrinter(){
    for(int i=0;i<10;i++){
        System.out.println(FINAL_STRING);
    }
}
Run Code Online (Sandbox Code Playgroud)

与:

public void stringPrinter(){
    for(int i=0;i<10;i++){
        System.out.println("foo");
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个更好,为什么(假设字符串值保持不变)?

上面的(第二个)示例是否会导致创建10个String对象,或者JVM是否会意识到实际只使用了一个文字,并创建了一个引用.如果是这样,将String声明为final是否有任何优势(如第一个例子中所示)?

如果解释的代码确实用单个引用替换字符串文字,那么如果相同的文字出现在多个位置,那么它是否仍然适用:

public void stringPrinter(){
    for(int i=0;i<5;i++){
        System.out.println("foo"); // first occurence
        System.out.println("foo"); // second occurence
    }
}
Run Code Online (Sandbox Code Playgroud)

java string final

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

CSS显示元素:无; 打破布局 - 导致错位

我有一个基本菜单,由水平对齐的列表(<li>)组成,每个包含一个图标图像和一些文本:

菜单栏

其中一个<li>包含一个额外的图像,display: none;以便图标可以切换(在这个例子中从绿色到红辣椒.问题是它在某些浏览器上没有正确对齐,如上图所示.我的理解是,visibilty: hidden;与之相反,一个元素display: none;不应该影响任何其他元素的位置,并且应该渲染,就好像它不存在一样?

它无法正确呈现的浏览器是谷歌浏览器Safari - 但仅限于Windows 上的MacOS(!?)和IE7(我知道,我知道......).我测试的每个其他浏览器/操作系统组合都可以.

这是HTML:

<ul class="menu">
    <li><img alt="Green Pepper" src="/green.png">li</li>
    <li><img alt="Green Pepper" src="/green.png">li</li>
    <li><img alt="Green Pepper" src="/green.png">li</li>
    <li id="change">
        <img alt="Red Pepper" src="/red.png" style="display: none;">
        <img alt="Green Pepper" src="/green.png"> 
        li
    </li>
    <li><img alt="Green Pepper" src="/green.png">li</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这是CSS:

.menu li {
    cursor: default;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10pt;
    list-style-type: none; 
    position: relative; 
    text-align:center; …
Run Code Online (Sandbox Code Playgroud)

css safari macos internet-explorer google-chrome

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

Tomcat和Eclipse Zero Turnaround部署

我希望能够将代码更改部署到Tomcat(即将发布),而我正在Eclipse中进行开发.

到目前为止,我有Eclipse的输出,将构建的类放在WEB-INF/classes我的Web应用程序的文件夹中.

我还有一个可重新加载的上下文,web.xml作为一个受监视的资源.任何编辑/保存到这个文件重新加载我的Web应用程序,他仅用一秒多-比建造新的战争文件,并在充分部署要快得多.

但是,我想要做的是在编辑任何源文件时触发重新部署.由于在Tomcat中修改了.class文件,我似乎只需要监视WEB-INF/classes文件夹及其子项中的任何更改.

我已经读过,我可以在Tomcat中添加额外的监视资源,context.xml但这似乎不是我需要的 - 除非可以指定一个将被监视的目录(包括递归监视子文件夹和文件)?

<Context>
  <WatchedResource>WEB-INF/web.xml</WatchedResource>
  <WatchedResource>WEB-INF/someother.file</WatchedResource>
  <Manager pathname=""/>
</Context>
Run Code Online (Sandbox Code Playgroud)

基本上,我的问题是我可以在整个类文件夹(不包括每个WatchedResource显式文件夹)中触发在Tomcat中重新部署吗?

如果没有,touch每当我在该项目中保存源文件时,是否可以将Eclipse配置为web.xml文件?我正在开发Windows系统.:(


PS我对JRebel产品不感兴趣.任何答案都应该是免费解决方案.


更新

根据Tomcat 文档,应该通过将上下文设置为reloadable来监视classes文件夹:

如果您希望Catalina监视/ WEB-INF/classes /和/ WEB-INF/lib中的类以进行更改,则设置为true;如果检测到更改,则自动重新加载Web应用程序.

只有对web.xml的更改才会触发重新加载.这是一个错误还是我的设置不正确?

另外,我已经阅读了有关docBase为给定上下文设置属性的信息:

docBase="webapps/someExample"
Run Code Online (Sandbox Code Playgroud)

这似乎接近我的需要,因为我可以在Eclipse中快速重新发布.我唯一的问题是我需要在同一端口等同时在Tomcat中运行多个web应用程序/ servlet.

java eclipse tomcat hotdeploy eclipse-wtp

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

Java:使用import或显式包/类名?

我正在编写一个非常基本的应用程序,扩展了Swing JFrame.明确引用之间有什么区别:

public class LineTest extends javax.swing.JFrame {
...
Run Code Online (Sandbox Code Playgroud)

或预先导入课程:

import javax.swing.JFrame;

public class LineTest extends JFrame {
...
Run Code Online (Sandbox Code Playgroud)

何时(和为什么)你会使用一种技术而不是另一种?

java inheritance class package

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

调试时如何忽略某些脚本文件/行?

我正在尝试调试一些JavaScript,我想知道当我将鼠标悬停在某个div元素上时会执行什么代码(我不知道哪些代码,因为没有直接'onmouseover' - 我认为有一个jQuery选择器在某处?).

通常我会使用Developer Tools/Firebug提供的"Break All"/"Break On Next"工具,但我的问题是其他代码(代码,鼠标移动监听器等)会立即被捕获.

我想做的是告诉调试器忽略某些JavaScript文件或单独的行,这样它就不会停止在我不感兴趣或已经排除的代码上.有没有办法在IE中实现这一点(吐,吐!) - 或者你能建议一个更好的方法吗?

javascript debugging jquery firebug internet-explorer

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

Velocity - 如何在使用jQuery时避免ParseErrorException?

我正在尝试在网页上的某些JavaScript中添加jQuery帖子.整个页面由几个Velocity模板构成.一切都很好,直到我试图添加jQuery帖子,现在我得到:

org.apache.velocity.exception.ParseErrorException: Encountered "," at line 282, column 24 of /WEB-INF/velocity/www/comments.vm
Was expecting one of:
    "(" ...
    <RPAREN> ...
    <ESCAPE_DIRECTIVE> ...
~~~snip~~~
Run Code Online (Sandbox Code Playgroud)

第282行$.post(...和第24列似乎是第一个","字符.最初我在这一行上有JSON,但我把它向上移动(到了var myJSONObject ...行),因为我认为与无效JSON相关的错误(行开头的标签给出了一个误导性的列号).

var myJSONObject = {"body": "", "action": "postcomment", "submitted": "true", "ajax": "true"};
myJSONObject.body = $("body").val();
$.post("$!{articleurl}", myJSONObject, function(result){            
    btn.textContent='Comment sent successfully.';  
});
Run Code Online (Sandbox Code Playgroud)

次要更新

我改变了以下几行:

var url = "$articleurl";

$.post(url, myJSONObject, function(result){
~~~snip~~~
Run Code Online (Sandbox Code Playgroud)

解析异常仍然集中在第一个" , ".我假设问题是Velocity认为它应该能够解析$ .post - 事实上,它是jQuery.我在其他Velocity VM模板中使用了jQuery而没有任何问题.有没有办法让Velocity在解析时忽略某些行/语句?


更新2

我找到了关于在Velocity中转义引用的链接,但它没有解决我的问题.之前添加" \ " $.post会给出完全相同的错误,但是该列是一个额外的,因为在行的开头添加了字符.

javascript java jquery json velocity

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

SonarQube问题"为这个测试用例添加至少一个断言"用于带断言的单元测试?

我遇到SonarQube问题,引发了我的几个单元测试问题,引发了以下问题:

在此测试用例中添加至少一个断言.

每个测试用例都类似于这种格式(其中许多断言被委托给具有公共断言的方法,以避免重复):

@Test
public void companyNameOneTooLong() throws Exception {
    AddressFormBean formBean = getValidBean();
    formBean.setCompanyNameOne("123456789012345678901234567890123456");

    assertViolation(validator.validate(formBean), "companyNameOne", "length must be between 0 and 35");
}

private void assertViolation(Set<ConstraintViolation<AddressFormBean>> violations, String fieldname, String message) {
    assertThat(violations, hasSize(1));
    assertEquals(fieldname, violations.iterator().next().getPropertyPath().iterator().next().getName());
    assertEquals(message, violations.iterator().next().getMessage());
}
Run Code Online (Sandbox Code Playgroud)

现在,显然我可以将三个断言从私有方法中拉出来并将它们放入测试方法中 - 但我正在多次执行相同的检查(在不同的字段上).

所以,我认为我会尝试模仿断言方法的行为,通过(重新)抛出AssertionError:

private void assertViolation(Set<ConstraintViolation<AddressFormBean>> violations, String fieldname, String message) throws AssertionError {
    try {
        assertThat(violations, hasSize(1));
        assertEquals(fieldname, violations.iterator().next().getPropertyPath().iterator().next().getName());
        assertEquals(message, violations.iterator().next().getMessage());
    } catch (AssertionError e) {
        throw e;
    }
 }
Run Code Online (Sandbox Code Playgroud)

不幸的是,这种方法也不起作用.

JUnit断言方法有什么特别之处/什么是SonarQube专门检查是否已经为每个测试做出了断言?

或者 - 是否有其他方法可以实现相同的最终结果(避免一遍又一遍地重复共享断言代码)?

java junit unit-testing sonarqube

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

你还有什么古老的学校代码?

最近几天因为工作生病而厌倦了我的大脑,我决定尝试挖掘一些旧代码.我可以找到一些我写过的古代Atari ST的二进制版本,但我找不到任何来源.我确实设法挖掘了一个旧的ModeX库,这个库是我在很久以前从传奇的旧x2ftp站点的存档中编写的.

http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos

爆炸从过去:-)

; Actually Sticks Us Into ModeX - With 240 Scanlines Per Page
; Set The Variable LSCAN To The Virtual Scanline Length You Want
; Trashes AX, CX, DX, DS, SI
; Shouldn't Matter Though As This Should Be The First Thing You Call!
Set_X_240   PROC
        Call    Set_Graph       ; Set Mode 13h
        mov     dx, Seq_Port
        mov     ax, 00604h      ; Index 4 (Memory Mode Reg.) In AL
                                ; Bit 3 = Chain 4
        out     dx, ax          ; …
Run Code Online (Sandbox Code Playgroud)

assembly 68000 legacy-code

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