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