我是JSF的新手,我一直在寻找一些教程和帖子(很难找到好的/新的材料),但我仍然不知道如何将".jar"文件导入到我的JSF 2.2项目中。
我有这个".jar"文件,它使用了一些"。所以(共享对象)文件。因此,我将它们复制并粘贴到WEB-INF/lib文件夹中(正如一些教程建议的那样)。然后我右键单击我的项目,选择:属性> Java构建路径>添加外部jar,并指向我上面提到的"。jar"。
之后,我创建了我的Bean和我的视图,如下所述:
豆:
package somepackage;
import javax.faces.bean.*;
import uk.ac.ox.cs.fdr.*; // This is the jar file I want to use
@ManagedBean
public class SomeBean {
private String text = "";
public String getText(){
return(text);
}
public void setText(String ntext){
this.text = ntext;
}
public void foo(){
String aux = "";
try {
Session session = new Session(); //this class is defined inside the .jar file
session.loadFile("intro.csp");
//
for (Assertion assertion : session.assertions()) {
assertion.execute(null);//Assertion is also a class from this jar
aux.concat(assertion.toString()+" "+
(assertion.passed() ? "Passed" : "Failed")); // here I concatenate the string to my auxiliary string
}
}
catch (InputFileError error) {
setText(error.toString());
}
catch (FileLoadError error) {
setText(error.toString());
}
this.setText(aux);
fdr.libraryExit();
}
}
And my view:
<h:form>
<textarea>#{someBean.text}</textarea>
<h:commandButton value="Press Me" action="#{someBean.foo}"/>
</h:form>
当我运行我的服务器(我使用Tomcat 8与eclipse),一切正常启动(我得到2个警告,但我看到在其他帖子,我可以忽略它们)它们是:
Classpath entry /home/rrs/workspace/myProjct/WebContent/WEB-INF/lib/fdr.jar will not be exported or published. Runtime ClassNotFoundExceptions may result. myProjct P/myProjct Classpath Dependency Validator Message
和
Description Resource Path Location Type Method must have signature "String method(), String method()...
所以我去http://localhost:8080/myProjct/index.jsf并尝试使用我的按钮(想法是,当我按下它,foo()函数将被调用,文本区将显示一些文本)。但是看起来从"try{}"到"fdr。libraryExit",代码不会被执行(控制台不显示任何错误,但是文本区域没有更新)。我不知道为什么会这样。
PS:我粘贴了"介绍"。
我认为您可能错过了部署组装部分。您需要检查Project Properties -> Deployment Assembly,将jar放到服务器的WEB-INF/lib文件夹中。