cmsformhandler.java
来自「找了很久才找到到源代码」· Java 代码 · 共 810 行 · 第 1/3 页
JAVA
810 行
return m_formConfiguration;
}
/**
* Returns the localized messages.<p>
*
* @return the localized messages
*/
public CmsMessages getMessages() {
return m_messages;
}
/**
* Returns if the submitted values contain validation errors.<p>
*
* @return true if the submitted values contain validation errors, otherwise false
*/
public boolean hasValidationErrors() {
return (!isInitial() && (getErrors().size() > 0));
}
/**
* Initializes the form handler and creates the necessary configuration objects.<p>
*
* @param req the JSP request
* @param formConfigUri URI of the form configuration file, if not provided, current URI is used for configuration
* @throws Exception if creating the form configuration objects fails
*/
public void init(HttpServletRequest req, String formConfigUri) throws Exception {
m_mulipartFileItems = CmsRequestUtil.readMultipartFileItems(req);
if (m_mulipartFileItems != null) {
m_parameterMap = CmsRequestUtil.readParameterMapFromMultiPart(
getRequestContext().getEncoding(),
m_mulipartFileItems);
} else {
m_parameterMap = new HashMap();
}
if (m_mulipartFileItems != null) {
Map fileUploads = (Map)req.getSession().getAttribute(ATTRIBUTE_FILEITEMS);
if (fileUploads == null) {
fileUploads = new HashMap();
}
// check, if there are any attachments
Iterator i = m_mulipartFileItems.iterator();
while (i.hasNext()) {
FileItem fileItem = (FileItem)i.next();
if (CmsStringUtil.isNotEmpty(fileItem.getName())) {
// append file upload to the map of file items
fileUploads.put(fileItem.getFieldName(), fileItem);
m_parameterMap.put(fileItem.getFieldName(), new String[] {fileItem.getName()});
}
}
req.getSession().setAttribute(ATTRIBUTE_FILEITEMS, fileUploads);
} else {
req.getSession().removeAttribute(ATTRIBUTE_FILEITEMS);
}
String formAction = getParameter(PARAM_FORMACTION);
setErrors(new HashMap());
m_isValidatedCorrect = null;
setInitial(CmsStringUtil.isEmpty(formAction));
// get the localized messages
CmsModule module = OpenCms.getModuleManager().getModule(MODULE);
String para = module.getParameter("message", "/org/opencms/frontend/templateone/form/workplace");
setMessages(new CmsMessages(para, getRequestContext().getLocale()));
// get the form configuration
setFormConfiguration(new CmsForm(this, getMessages(), isInitial(), formConfigUri, formAction));
}
/**
* Returns if the form is displayed for the first time.<p>
*
* @return true if the form is displayed for the first time, otherwise false
*/
public boolean isInitial() {
return m_initial;
}
/**
* Returns the map of request parameters.<p>
*
* @return the map of request parameters
*/
public Map getParameterMap() {
return m_parameterMap;
}
/**
* Sends the confirmation mail with the form data to the specified email address.<p>
*
* @throws Exception if sending the confirmation mail fails
*/
public void sendConfirmationMail() throws Exception {
// get the field which contains the confirmation email address
I_CmsField mailField = (I_CmsField)getFormConfiguration().getFields().get(
getFormConfiguration().getConfirmationMailField());
String mailTo = mailField.getValue();
// create the new confirmation mail message depending on the configured email type
if (getFormConfiguration().getMailType().equals(CmsForm.MAILTYPE_HTML)) {
// create a HTML email
CmsHtmlMail theMail = new CmsHtmlMail();
theMail.setCharset(getCmsObject().getRequestContext().getEncoding());
if (CmsStringUtil.isNotEmpty(getFormConfiguration().getMailFrom())) {
theMail.setFrom(getFormConfiguration().getMailFrom());
}
theMail.setTo(createInternetAddresses(mailTo));
theMail.setSubject(getFormConfiguration().getMailSubjectPrefix()
+ getFormConfiguration().getConfirmationMailSubject());
theMail.setHtmlMsg(createMailTextFromFields(true, true));
theMail.setTextMsg(createMailTextFromFields(false, true));
// send the mail
theMail.send();
} else {
// create a plain text email
CmsSimpleMail theMail = new CmsSimpleMail();
theMail.setCharset(getCmsObject().getRequestContext().getEncoding());
if (CmsStringUtil.isNotEmpty(getFormConfiguration().getMailFrom())) {
theMail.setFrom(getFormConfiguration().getMailFrom());
}
theMail.setTo(createInternetAddresses(mailTo));
theMail.setSubject(getFormConfiguration().getMailSubjectPrefix()
+ getFormConfiguration().getConfirmationMailSubject());
theMail.setMsg(createMailTextFromFields(false, true));
// send the mail
theMail.send();
}
}
/**
* Sends the mail with the form data to the specified recipients.<p>
*
* If configured, sends also a confirmation mail to the form submitter.<p>
*
* @return true if the mail has been successfully sent, otherwise false
*/
public boolean sendMail() {
try {
// send optional confirmation mail
if (getFormConfiguration().isConfirmationMailEnabled()) {
if (!getFormConfiguration().isConfirmationMailOptional()
|| Boolean.valueOf(getParameter(CmsForm.PARAM_SENDCONFIRMATION)).booleanValue()) {
sendConfirmationMail();
}
}
// create the new mail message depending on the configured email type
if (getFormConfiguration().getMailType().equals(CmsForm.MAILTYPE_HTML)) {
// create a HTML email
CmsHtmlMail theMail = new CmsHtmlMail();
theMail.setCharset(getCmsObject().getRequestContext().getEncoding());
if (CmsStringUtil.isNotEmpty(getFormConfiguration().getMailFrom())) {
theMail.setFrom(getFormConfiguration().getMailFrom());
}
theMail.setTo(createInternetAddresses(getFormConfiguration().getMailTo()));
theMail.setCc(createInternetAddresses(getFormConfiguration().getMailCC()));
theMail.setBcc(createInternetAddresses(getFormConfiguration().getMailBCC()));
theMail.setSubject(getFormConfiguration().getMailSubjectPrefix()
+ getFormConfiguration().getMailSubject());
theMail.setHtmlMsg(createMailTextFromFields(true, false));
theMail.setTextMsg(createMailTextFromFields(false, false));
// attach file uploads
Map fileUploads = (Map)getRequest().getSession().getAttribute(ATTRIBUTE_FILEITEMS);
Iterator i = fileUploads.values().iterator();
while (i.hasNext()) {
FileItem attachment = (FileItem)i.next();
if (attachment != null) {
String filename = attachment.getName().substring(
attachment.getName().lastIndexOf(File.separator) + 1);
theMail.attach(
new CmsByteArrayDataSource(
filename,
attachment.get(),
OpenCms.getResourceManager().getMimeType(filename, null, "application/octet-stream")),
filename,
filename);
}
}
// send the mail
theMail.send();
} else {
// create a plain text email
CmsSimpleMail theMail = new CmsSimpleMail();
theMail.setCharset(getCmsObject().getRequestContext().getEncoding());
if (CmsStringUtil.isNotEmpty(getFormConfiguration().getMailFrom())) {
theMail.setFrom(getFormConfiguration().getMailFrom());
}
theMail.setTo(createInternetAddresses(getFormConfiguration().getMailTo()));
theMail.setCc(createInternetAddresses(getFormConfiguration().getMailCC()));
theMail.setBcc(createInternetAddresses(getFormConfiguration().getMailBCC()));
theMail.setSubject(getFormConfiguration().getMailSubjectPrefix()
+ getFormConfiguration().getMailSubject());
theMail.setMsg(createMailTextFromFields(false, false));
// send the mail
theMail.send();
}
} catch (Exception e) {
// an error occured during mail creation
if (LOG.isErrorEnabled()) {
LOG.error(e.getLocalizedMessage(), e);
}
m_errors.put("sendmail", e.getMessage());
return false;
}
return true;
}
/**
* Returns the request parameter with the specified name.<p>
*
* @param parameter the parameter to return
*
* @return the parameter value
*/
private String getParameter(String parameter) {
try {
return ((String[])m_parameterMap.get(parameter))[0];
} catch (NullPointerException e) {
return "";
}
}
/**
* Returns if the optional check page should be displayed.<p>
*
* @return true if the optional check page should be displayed, otherwise false
*/
public boolean showCheck() {
boolean result = false;
if (getFormConfiguration().getShowCheck() && ACTION_SUBMIT.equals(getParameter(PARAM_FORMACTION))) {
result = true;
} else if (getFormConfiguration().captchaFieldIsOnCheckPage()
&& ACTION_CONFIRMED.equals(getParameter(PARAM_FORMACTION))
&& !validate()) {
result = true;
}
return result;
}
/**
* Returns if the input form should be displayed.<p>
*
* @return true if the input form should be displayed, otherwise false
*/
public boolean showForm() {
boolean result = false;
if (isInitial()) {
// initial call
result = true;
} else if (ACTION_CORRECT_INPUT.equalsIgnoreCase(getParameter(PARAM_FORMACTION))) {
// user decided to modify his inputs
result = true;
} else if (ACTION_SUBMIT.equalsIgnoreCase(getParameter(PARAM_FORMACTION)) && !validate()) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?