HTMLFormEntry 是一种非常有效的表单保存方式。您创建 XML 并且模块在按下提交时处理将输入转换为数据库记录。
我们如何渲染一个表单,例如 at path/to/form.xml
?
我们必须在自己的页面中呈现它还是可以将它加载到页面中?
选项 1:利用public void HtmlFormEntry.HtmlForm.setXmlData(String xmlData)
import org.openmrs.module.htmlformentry.HtmlForm;
...
HtmlForm form = new HtmlForm();
form.setXmlData(xml);
选项 2:如果您的 XML 尚未加载public static HtmlForm HtmlFormEntryUI.HtmlFormUtil.getHtmlFormFromUiResource(<arguments>)
,请参考
relativeWebResourcePath
是/omod/src/main/webapp/resources
模块目录的相对路径。ResourceFactory resourceFactory, FormService formService, HtmlFormEntryService htmlFormEntryService, String providerAndPath
import org.openmrs.api.FormService;
import org.openmrs.module.htmlformentry.HtmlFormEntryService;
import org.openmrs.module.htmlformentry.HtmlForm;
import org.openmrs.module.htmlformentryui.HtmlFormUtil;
...
String htmlFormPath = thisModuleName+":"+relativeWebResourcePath;
ResourceFactory resourceFactory = ResourceFactory.getInstance();
FormService formService = Context.getFormService();
HtmlFormEntryService htmlFormEntryService = Context.getService(HtmlFormEntryService.class);
HtmlForm form = HtmlFormUtil.getHtmlFormFromUiResource(resourceFactory, formService, htmlFormEntryService, htmlFormPath);
import org.openmrs.module.htmlformentry.FormEntrySession;
...
FormEntrySession fes = new FormEntrySession(patient, form, request.session)
String html = fes.getHtmlToDisplay()
对象生成的 htmlFormEntrySession
应包含提交表单所需的所有逻辑。