Java 是否可以通过命令按钮调用此文件

Java 是否可以通过命令按钮调用此文件,java,jsf,primefaces,Java,Jsf,Primefaces,我在调用java文件时遇到了一些问题,我创建了一个java文件 @ManagedBean(name="pdfSearch") public class pdfSearch { public String NewDestination; public void main(String[] args) throws IOException { File dir = new File(NewDestination); String[] ex

我在调用java文件时遇到了一些问题,我创建了一个java文件

   @ManagedBean(name="pdfSearch")

public class pdfSearch {

    public String NewDestination;

    public void main(String[] args) throws IOException {

        File dir = new File(NewDestination);
        String[] extensions = new String[]{"pdf"};// Add more file formats here to disply, could use this later on to display to the user all the files they have uploaded
        System.out.println("Getting all .pdf files");
        List<File> files = (List<File>) FileUtils.listFiles(dir, extensions, true);
        for (File file : files) {
            System.out.println(file.getCanonicalPath());
        }

    }
}
@ManagedBean(name=“pdfSearch”)
公共类PDF搜索{
公共目的地;
public void main(字符串[]args)引发IOException{
文件目录=新文件(新目的地);
String[]extensions=new String[]{“pdf”};//在这里为display添加更多文件格式,以后可以使用它向用户显示他们上载的所有文件
System.out.println(“获取所有.pdf文件”);
List files=(List)FileUtils.listFiles(dir,extensions,true);
用于(文件:文件){
System.out.println(文件.getCanonicalPath());
}
}
}
但我不能通过命令按钮调用它来运行

                <p:commandButton action="#{pdfSearch.main}" value="Search"  ajax="False"/>

filter.finder方法不是JSF操作方法。这是一种签名方法

公共字符串methodName()


这在标准JSF中是行不通的。我会温习一下JSF文档中的操作方法。

您也写过,如果您想搜索仅小写的文件,可以使用
.toLowerCase()
。但事实并非如此


例如,如果您想按字母顺序排列,它只会将字母视为小写。

预期的行为是什么?您使用的是哪种JSF实现?JSF 2.1,当用户按下控制台中的按钮时,它会显示用户目录中的所有pdf文件,这只是为了在我添加更多特性之前进行测试,您真的应该考虑
Filter
类上的注释。其中两个是不必要的
@SessionScoped
vs
@ViewScoped
@Named
vs
@ManagedBean
好的,所以我已经重新编写了代码,但仍然无法从命令按钮调用感谢您的解释我已经重新编写了代码,但仍然遇到同样的问题,任何关于我做错了什么的建议,请查找一些讨论Actions vs ActionListeners的文档。命令按钮的action属性的默认方法签名是ManagedBean的方法,该方法不带参数并返回字符串(可用于页面导航)。您也可以使用actionListener属性。如果使用该属性,则方法签名将返回null并接受ActionEvent类型的单个输入参数。您试图从commandButton属性调用的方法的签名不正确(两次迭代都不正确)。。。尝试一下StackOverflow上已有的几十个问题