[opencms-dev] Antwort: Re: Antwort: Re: How to write into Frontend User-Forms?

Frank Pertack fpertack at vater-gruppe.de
Tue Jun 16 14:16:32 CEST 2009


Hi Mathias, hi guys,

I hate to disturb again, Your proposal seems to work fine.

But there is one little problem in your code:
Your version createsa new file (resource) of an Entry file, I wanted to
edit an existing one.
If I change the code to read the existing  file (like "employee_0001.html")
by changeing the line to

CmsResource document = cmsObject.readFile(
"/sites/default/inside/telefonliste/mitarbeiter/employee_0001.html");

Now I get the following error-lines:
javax.servlet.ServletException: org.opencms.file.
CmsVfsResourceNotFoundException: Error reading resource from path
"/sites/default/inside/telefonliste/mitarbeiter/employee_0001.html".
             at
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)

             at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)

             at
org.apache.jsp.WEB_002dINF.jsp.offline.system.modules.org_vug_templates.templates.telefonedit_jsp._jspService(telefonedit_jsp.java:160)

             at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
             at
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

I tried with the "cmsObject.readFile"- as well as with the
"cmsObject.readResource"-method. Both throw out the same error.
Nevertheless the respective files are in that path.
In the beginning I tried your snippet with the cmsObject.createResource -
method and I got an error like "file already exists...", so it seems that
the path is correct and the file exists.

Where is the problem with reading the existing file?

Again I thank you,
best regards

Frank



Frank Pertack


Vater Solution GmbH
Liebigstraße 26
24145 Kiel

Telefon: +49 431 20084-210
Telefax: +49 431 20084-222
Mobil: +49 151 16353519
mailto: fpertack at vater-gruppe.de
http://www.vater-gruppe.de

Amtsgericht Kiel, HRB 6403
Geschäftsführer:
Klaus-Hinrich Vater
Michael Wiese
-----
Diese Email enthält ggfs. vertrauliche und/oder rechtlich geschützte
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese Email
irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und
vernichten Sie diese Email. Das unerlaubte Kopieren sowie die unbefugte
Weitergabe dieser Email sind nicht gestattet.



|------------>
| Von:       |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Mathias Lin <mail at mathiaslin.com>                                                                                                                 |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| An:        |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |The OpenCms mailing list <opencms-dev at opencms.org>                                                                                                |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Datum:     |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |15.06.2009 17:20                                                                                                                                  |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Betreff:   |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Re: [opencms-dev] Antwort: Re: How to write into Frontend   User-Forms?                                                                           |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Gesendet   |
| von:       |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |opencms-dev-bounces at opencms.org                                                                                                                   |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|





Hi Frank,

the html form is probably a jsp template and it does not contain any
data of your phone book entry (maybe your phonebook entry elements are
just making use of this template to display the data together with the
input form to allow the user to change the data, but I don't know how
you configured your xsd/content type here).
Your phonebook entry elements are files that contain the actual data,
and it's xml structure is defined by your phoneBookEntry.xsd.


Below is a code snippet:


Locale locale = Locale.GERMAN;
String dataDir = "path/to/phonebook/_data/";
String filename = "/" + dataDir + "entry." +
Calendar.getInstance().getTimeInMillis() + ".html"; // or use any other
logic to create the file name

CmsObject cmsObject =
OpenCms.initCmsObject(OpenCms.getDefaultUsers().getUserGuest());
cmsObject.loginUser("AdminOrOtherUserWithWorkplacePermission",
"HisPassword");
cmsObject.getRequestContext().setSiteRoot(OpenCms.getSiteManager().getDefaultSite().getSiteRoot());

cmsObject.getRequestContext().setCurrentProject(cmsObject.readProject("942c4f84-e610-11dd-8e8a-85b622eae7ae")

);  // <-- needs to be UUID of the offline project

CmsResource document = cmsObject.createResource(filename , 1011);   //
<--- 1011 just an example, this id the ID of your phonebook-entry.xsd
(as of opencms-modules.xml)
CmsXmlContent xmlContent = CmsXmlContentFactory.unmarshal(cmsObject,
document, request);
xmlContent.getValue("Title", locale,0).setStringValue(cmsObject,
request.getParameter("title")) ;     // depending on your form
validation, you might need to check for NULL values here
xmlContent.getValue("FirstName", locale,0).setStringValue(cmsObject,
request.getParameter("firstName"));
xmlContent.getValue("LastName", locale,0).setStringValue(cmsObject,
request.getParameter("lastName"));
// ...

xmlContent.getFile().setContents(xmlContent.marshal());
cmsObject.writeFile(xmlContent.getFile());
cmsObject.unlockResource("/" + dataDir + document.getName());


Regards,
Mathias


Frank Pertack wrote:
>
> thank you for your expeditious answer. But I thought, the html form,
> that is built by the contentload, contains the xml-Data in its
> controlcode. Is there a seperate xml-file, that stores the data of the
> controlcode, and if yes, what is the name of that xml-file?
>
> And I would like to accept your offer and take the alternative code
> snippets. Mightbe I get a better understanding of the problem.
>
> Meanwhile I try your proposal with a smaller file.
>
> Thank you very much
>
> Best regards
>
>
>
> Inactive hide details for Nacho Fernández Orellana ---15.06.2009
> 13:53:25---Hi Frank and list, Your frontend-form built using cNacho
> Fernández Orellana ---15.06.2009 13:53:25---Hi Frank and list, Your
> frontend-form built using contentload and contentshow should build a
>
>
> Von:
> Nacho Fernández Orellana <nacho.fernandez.orellana at gmail.com>
>
> An:
> The OpenCms mailing list <opencms-dev at opencms.org>
>
> Datum:
> 15.06.2009 13:53
>
> Betreff:
> Re: [opencms-dev] How to write into Frontend User-Forms?
>
> Gesendet von:
> opencms-dev-bounces at opencms.org
>
> ------------------------------------------------------------------------
>
>
>
> Hi Frank and list,
>
> Your frontend-form built using contentload and contentshow should
> build a html form whose data will be sent to a certain target page (of
> course this page can be the same jsp page that built the form). In any
> case, the destination jsp should get the sent parameters and then use
> them to build the xml of the phonebook entry.
>
> I recommend programming a simple java bean that has all the elements
> your phonebook entry has as fields and that provides a simple "toXml"
> method that builds the right xml of a phonebook entry according to
> your xsd. That way you could create a java method called something
> like "writePhonebookEntry" that does something like:
>
>             PhonebookEntryBean bean = getBeanFromRequestParameters(
> request ); <-- method to write
>             CmsFile file = cms.readFile( PATH_OF_XML_YOU_ARE_EDITING );
>             file.setContents( YOUR_BEAN.toXml().getBytes() );
>             cms.writeFile( file );
>
> Where "cms" is a CmsObject and you have to be in the offline project
> and lock the xml file accordingly.
> I've always found this to be the simpler way, other method is editing
> the xml contents for the modified fields in your form instead of
> rewriting the complete well-formed xml. If you need code snippets for
> that alternative approach, ask again. Hope this helps. Greetings,
>
> Nacho Fernandez.
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please
visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
>
>
> Frank Pertack
>
>
> Vater Solution GmbH
> Liebigstraße 26
> 24145 Kiel
>
> Telefon: +49 431 20084-210
> Telefax: +49 431 20084-222
> Mobil: +49 151 16353519
> mailto: fpertack at vater-gruppe.de
> http://www.vater-gruppe.de
>
> Amtsgericht Kiel, HRB 6403
> Geschäftsführer:
> Klaus-Hinrich Vater
> Michael Wiese
> -----
> Diese Email enthält ggfs. vertrauliche und/oder rechtlich geschützte
> Informationen. Wenn Sie nicht der richtige Adressat sind oder diese
> Email irrtümlich erhalten haben, informieren Sie bitte sofort den
> Absender und vernichten Sie diese Email. Das unerlaubte Kopieren sowie
> die unbefugte Weitergabe dieser Email sind nicht gestattet.
> ------------------------------------------------------------------------
>
>


_______________________________________________
This mail is sent to you from the opencms-dev mailing list
To change your list options, or to unsubscribe from the list, please visit
http://lists.opencms.org/mailman/listinfo/opencms-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20090616/d7d925a2/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20090616/d7d925a2/attachment.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ecblank.gif
Type: image/gif
Size: 45 bytes
Desc: not available
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20090616/d7d925a2/attachment-0001.gif>


More information about the opencms-dev mailing list