我有一个专门用于静态内容的服务器,所以我不想使用资源目录存储javascript文件,但我不想停止使用<h:outputScript />标记.
如何使该标记生成指向文件所在的静态服务器的链接,而不是RES_NOT_FOUND.我甚至不需要JSF检查文件是否存在...
我试过了: <h:outputScript name="#{requestBean.staticURL}/javascript.js"/>
生成: <script type="text/javascript" src="http://static.server.com/javascript.js"></script>
但它会产生: <script type="text/javascript" src="RES_NOT_FOUND"></script>
我能做什么?
解决方案: Daniel向我指出了一个很好的解决方案
我已经下载了Omnifaces的源代码并将org.omnifaces.resourcehandler.CDNResourceHandle.createResource(String resourceName, String libraryName)方法修改为:
public Resource createResource(String resourceName, String libraryName) {
final Resource resource = wrapped.createResource(resourceName, libraryName);
if (cdnResources == null) {
return resource;
}
String resourceId = ((libraryName != null) ? libraryName + ":" : "") + resourceName;
String path = cdnResources.get(resourceId);
if(path == null){
if(libraryName != null){
resourceId = libraryName + ":%";
path = cdnResources.get(resourceId); …Run Code Online (Sandbox Code Playgroud) 我正在检查stackoverflow页面的好奇心,并注意到有趣的网址: ws://sockets-se.or.stackexchange.com/

我想更多地了解ws协议,但我甚至不知道如何开始搜索,因为搜索ws或ws protocol没有向我显示我期待的结果...
这个协议是什么?有人能指点我的方向吗?
当我在此方法return的try块中的两个值中都出现资源泄漏警告时,我在Eclipse中正常工作:
@Override
public boolean isValid(File file) throws IOException
{
BufferedReader reader = null;
try
{
reader = new BufferedReader(new FileReader(file));
String line;
while((line = reader.readLine()) != null)
{
line = line.trim();
if(line.isEmpty())
continue;
if(line.startsWith("#") == false)
return false;
if(line.startsWith("#MLProperties"))
return true;
}
}
finally
{
try{reader.close();}catch(Exception e){}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我不明白它会导致资源泄漏的原因,因为我是reader在try作用域之外声明变量,在try块内添加资源,然后在另一个finally块中将其关闭以使用另一个try...catch忽略异常,而NullPointerExceptionif reader是null出于某种原因...
据我所知,finally块总是在离开try...catch结构体时执行,因此在try块内返回值仍将finally …
我正在尝试将Dye颜色应用到现有的ItemStack中,如何在不使用弃用方法和创建新堆栈的情况下执行此操作?
我尝试了以下代码,但这导致了正常的墨水袋.
ps:我只在第一行创建一个堆栈作为示例.
final ItemStack stack = new ItemStack(Material.INK_SACK);
Dye dye = new Dye();
dye.setColor(DyeColor.LIME);
stack.setData(dye);
Run Code Online (Sandbox Code Playgroud)
编辑:添加最终到堆栈变量以显示它不能被新堆栈替换.
一些开发人员通过创建Object[]并强制转换为通用类型来创建通用类型的数组,如以下示例代码所示:
public class ArrTest<E> {
public void test(E a){
E[] b = (E[])new Object[1];
b[0] = a;
System.out.println(b[0]);
}
public static void main(String[] args){
ArrTest<String> t = new ArrTest<String>();
t.test("Hello World");
}
}
Run Code Online (Sandbox Code Playgroud)
该示例将起作用,并且仅显示警告:Type safety: Unchecked cast from Object[] to E[]。
灰心吗?这是创建泛型类型的数组的最佳方法吗?如果我在软件中广泛使用此对象,是否会导致意外的结果或异常?
我创建的PreparedStatement时候,我需要将答案传递给答案而不解决您的问题,请编辑以详细解释您的问题中唯一的部分.标题
是否值得为int值创建PreparedStatement?SQL查询,但是值得准备一个语句来传递int参数并在执行后关闭吗?
void delete(int key, int orElse) throws SQLException
{
try(PreparedStatement pst = this.connection.prepareStatement(
"DELETE FROM a_table WHERE the_int_primary_key=? OR random_int_field=?"
))
{
pst.setInt(1, key);
pst.setInt(2, orElse);
pst.executeUpdate();
}
}
Run Code Online (Sandbox Code Playgroud)
是否值得准备该声明?是否会增加安全性?
如果我用正常的声明做什么怎么办?这有风险吗?它会执行得更快吗?
void delete(int key, int orElse) throws SQLException
{
try(Statement stm = this.connection.createStatement())
{
stm.executeUpdate(
"DELETE FROM a_table WHERE the_int_primary_key="+key+" OR random_int_field="+orElse
);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这个问题是不是重复的准备好的语句显着减缓程序?因为:
PreparedStatementsjava optimization jdbc query-optimization prepared-statement