2016-08-30 2 views
0

Когда я нажимаю кнопку, ничего не происходит.Выполнить java-метод при нажатии кнопки JSF

<h:commandButton value="Generate PDF" type="button" 
     action="#{parseHtml12.createPdf}" /> 

Эта кнопка находится в файле XHTML, который я хочу преобразовать в pdf. код класса Java здесь:

public class ParseHtml12 { 
    public static final String DEST = "C:\\Users\\User\\Desktop/report.pdf"; 
    public static final String HTML = "web/data.xhtml"; 

    public static void main(String[] args) throws IOException, DocumentException { 
     File file = new File(DEST); 
     file.getParentFile().mkdirs(); 
     new ParseHtml12().createPdf(DEST); 
    } 


    public void createPdf(String file) throws IOException, DocumentException { 

     Document document = new Document(); 

     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file)); 
     writer.setInitialLeading(12); 

     document.open(); 

     XMLWorkerHelper.getInstance().parseXHtml(writer, document, 
       new FileInputStream(HTML)); 

     document.close(); 
    } 
} 

Этот код хорошо, только проблема в том, как выполнить класс по нажатию кнопки. Когда я запускаю класс в среде IDE, я получаю результат, но проблема в том, что содержимое в XHTML является динамическим и не извлекает значения.

Если я исполняю класс, когда значение будет заполнено, это даст мне желаемый результат.

UPDATE: при нажатии кнопки динамические данные исчезают. И если я нажму еще раз, то произойдет следующее: javax.el.PropertyNotFoundException: /data.xhtml @48,45 action="#{parseHtml12.createPdf}": Target Unreachable, identifier 'parseHtml12' resolved to null

+0

Это не похоже на вопрос iText. Когда вы пишете себя, часть iText кода на Java, это нормально, когда вы запускаете ее в своей среде IDE, поэтому ваша проблема изолирована в вашем JSF. Я предлагаю удалить тэг iText. –

ответ

1

У меня недостаточно очков для комментариев.

попробуйте обернуть вашу командуButton внутри тега <h:form> и добавьте type="submit" к кнопке.

+0

Спасибо. Это помогло мне запустить кнопку, но при нажатии кнопки динамические данные исчезают. И если я нажму еще раз, то получится так: 'javax.el.PropertyNotFoundException: /data.xhtml @ 48,45 action =" # {parseHtml12.createPdf} ": Целевая недоступность, идентификатор 'parseHtml12' разрешен null' – digo

+0

' createPdf ', это метод, а не атрибут, плюс он имеет параметр String, он должен быть' # {parseHtml12.createPdf (имя вашего файла)} ' –

+0

несвязанный, попробуйте обработать 2 исключения в методе' createPdf', просто бросать их непрактично. попробуйте 'FacesMessage' с' ' –

 Смежные вопросы

  • Нет связанных вопросов^_^