Skip to main content
February 9, 2016
Question

Comments not holding data values

  • February 9, 2016
  • 1 reply
  • 896 views

It is not giving an error, but the data values are not staying when comment page is refreshed.  It does show the values immediately after loading but not after refresh.

Something worth noting is the variables for ALL the blog section are not working without the get() in the variables.  For example, instead of #blogpost.title#, it wants #blogpost.getTitle()#.  The duplicate site does not do that, and when I had that issue then, I simply deleted the db tables, repopulated them, and then it worked.  I just deleted the db blog tables and repopulated them and both the comment issue and get() issue still neeed resolved.   Maybe the get() is related or should be addressed first?

Here is a <cfdump var="#blogpost#"> :

component workexperience.www.com.entity.blogPost
PROPERTIES
id1
titletitle
summarysummary
bodybody
dateposted2005-01-01 00:00:00.0
createdDateTime2005-10-10 10:10:55.0
modifiedDateTime2005-10-10 10:10:55.0
deleted[empty string]
comments
array
1
component workexperience.www.com.entity.blogComment
PROPERTIES
id2
author[empty string]
comment[empty string]
createdDateTime[empty string]
deleted[empty string]
blog  [see cfc1 for blogPost details]
METHODS
2
component workexperience.www.com.entity.blogComment
AUTHORcomment Name Here
COMMENTcomment body here
CREATEDDATETIME{ts '2016-02-09 14:48:54'}
PROPERTIES
id[empty string]
author[empty string]
comment[empty string]
createdDateTime[empty string]
deleted[empty string]
blog[empty string]
METHODS
categories
array
1
component workexperience.www.com.entity.blogPostCategory
PROPERTIES
blogPost  [see cfc1 for blogPost details]
blogCategory
component workexperience.www.com.entity.blogCategory
PROPERTIES
id1
nameJesusName
posts
array
1[see cfc4 for blogPostCategory details]
METHODS
METHODS
METHODS
Date Posted:01/01/2005

Here is the refreshed <cfdump var="#blogpost#">  Notice the empty strings in author, comment, and createdDateTime now.

component workexperience.www.com.entity.blogPost
PROPERTIES
id1
titletitle
summarysummary
bodybody
dateposted2005-01-01 00:00:00.0
createdDateTime2005-10-10 10:10:55.0
modifiedDateTime2005-10-10 10:10:55.0
deleted[empty string]
comments
array
1
component workexperience.www.com.entity.blogComment
PROPERTIES
id2
author[empty string]
comment[empty string]
createdDateTime[empty string]
deleted[empty string]
blog  [see cfc1 for blogPost details]
METHODS
2
component workexperience.www.com.entity.blogComment
PROPERTIES
id3
author[empty string]
comment[empty string]
createdDateTime[empty string]
deleted[empty string]
blog  [see cfc1 for blogPost details]
METHODS
categories
array
1
component workexperience.www.com.entity.blogPostCategory
PROPERTIES
blogPost  [see cfc1 for blogPost details]
blogCategory
component workexperience.www.com.entity.blogCategory
PROPERTIES
id1
nameJesusName
posts
array
1[see cfc4 for blogPostCategory details]
METHODS
METHODS
METHODS

Here is the blogpost.cfm page with the comment form.  The difference between this page and the same page that works in the duplicate site is the !CSRFVerifyToken(form.token).  The duplicate site that is working has !isSimpleValue(form.token), instead.  But the learncfinaweek site has the !CSRFVerifyToken....

<cfset blogPost = EntityLoad('BlogPost',url.id,true) />

<cfset blogCategories = EntityLoad('BlogCategory') />

<cfparam name="form.submitted" default="0" />

<cfparam name="form.token" default="" />

<cfif form.submitted>

    <cfif isSimpleValue(form.author)>

        <cfset form.author = canonicalize(form.author, true, true) />

    </cfif>

    <cfif isSimpleValue(form.comment)>

        <cfset form.comment = canonicalize(form.comment, true, true) />

    </cfif>

    <cfif !isSimpleValue(form.author) || !isSimpleValue(form.comment) || !CSRFVerifyToken(form.token)>

        <cfthrow message="Validation Error">

    </cfif>

    <cfset comment=entityNew('blogComment') />

    <cfset comment.author=form.author />

    <cfset comment.comment=form.comment />

    <cfset comment.createdDateTime=now() />

    <cfset blogPost.addComment(comment) />

    <cfset entitySave(blogPost) />

</cfif>

<cfimport taglib="customTags/" prefix="layout" />

<layout:page section="blog">

        <!-- Content Start -->

        <!--Card  -->

        <div id="content">

            <div class="card-pattern">

                <!-- blog -->

                <div id="blog">

                    <div class="clr">

                        <div class="top-bg1">

                            <div class="top-left">

                                <div><h1>Blog</h1></div>

                            </div>

                        </div>

                        <div class="clr">

                            <div class="pat-bottomleft"> </div>

                            <div class="pat-bottomright"> </div>

                        </div>

                    </div>

                    <div class="blog-top">

                        <div class="clr">

                        <cfoutput>

                            <div class="left">

                                <!-- Blog Title -->

                                <h2 class="big">

                                    #blogPost.getTitle()#

                                </h2>

                                <cfdump var="#blogpost#">

                                <!-- Date Published -->

                                <h5>

                                    <strong>Date Posted</strong>:#dateformat(blogPost.getDatePosted(),'mm/dd/yyyy')#

                                </h5>

                                <!-- Blog Body -->

                                #blogPost.getBody()#

                                <!-- Blog Export -->

                                <p>

                                    <a href="exportToPDF.cfm?id=#blogPost.getid()#" target="_new"><img src="assets/images/export_pdf.png" border="0"/></a>

                                </p>

                                <!-- Blog Comments Section -->

                                <h3>

                                    Comments (#arrayLen(blogPost.getComments())#)

                                </h3>

                                <div class="clr hline"> </div>

                                <div class="clr comments">

                                    <ul>

                                        <!-- Start Comment -->

                                        <cfloop array="#blogPost.getComments()#" index="comment">

                                            <li>

                                                <p>

                                                    <strong>Posted On:</strong> #dateformat(comment.getCreatedDateTime(),'mm/dd/yyyy')# at #timeformat(comment.getCreatedDateTime(),'short')# By #encodeForHTML(comment.getauthor())#

                                                </p>

                                                <p>

                                                    #encodeForHTML(comment.getComment())#

                                                </p>

                                        <div class="clr hline"> </div>

                                            </li>

                                            <!-- End Comment -->

                                        </cfloop>

                                    </ul>

                                </div>

                                <h3>

                                    Post Comment

                                </h3>

                                <div class="clr hline"> </div>

                                <div class="clr postComment">

                                    <form action="blogpost.cfm?id=#blogPost.getId()#" method="post" id="form">

                                        <div>

                                            <label>Name <span class="font-11">(required)</span></label>

                                            <input name="author" type="text" class="required" />

                                        </div>

                                        <div class="textarea">

                                            <label>Comment <span class="font-11">(required)</span></label>

                                            <textarea name="comment" rows="6" cols="60" class="required"></textarea>

                                        </div>

                                        <div>

                                            <input id="submitBtn" value="Submit"  name="submit" type="submit" class="submitBtn" />

                                        </div>

                                        <input type="hidden" name="submitted" value="1" />

                                        <input type="hidden" name="token" value="#CSRFGenerateToken()#" />

                                    </form>

                                </div>

                            </div>

                        </cfoutput>

                            <div class="right" >

                                <h2>Categories</h2>

                                <!-- Blog Specific Categories -->

                                <div id="categories" align="center">

                                    <ul>

                                        <cfoutput>

                                            <cfloop array="#blogCategories#" index="blogCategory">

                                                <li><a href="#blogCategory.getName()#">#blogCategory.getName()#</a></li>

                                            </cfloop>

                                        </cfoutput>

                                    </ul>

                                </div>

                            </div>

                        </div>

                    </div>

                    <div class="clr"></div>

                </div> <!--blog end -->

</layout:page>

This topic has been closed for replies.

1 reply

BKBK
Community Expert
Community Expert
February 14, 2016
  • When you refresh the page, no form is submitted.
  • Hence, form.submitted is 0.
  • This in turn implies that Coldfusion won't execute the lines

        <cfset comment=entityNew('blogComment') />

        <cfset comment.author=form.author />

        <cfset comment.comment=form.comment />

        <cfset comment.createdDateTime=now() />

        <cfset blogPost.addComment(comment) />

        <cfset entitySave(blogPost) />

March 1, 2016

Is the <cfset entitySave(blogPost) /> not saving the values in the database then? Because, blogPost.getComments() should pull it up if it is saved.?

When !CSRFVerifyToken(form.token) is used, the dump brings the values up when first submitted but not when refreshed.  When !isSimpleValue(form.token) is used, the dump brings up nothing when first submitted and when refreshed.  Neither displays the data on the page, only the dump shows the above, even when the first submitted has values in the dump and should show on the page.

BKBK
Community Expert
Community Expert
March 2, 2016

DavidSCarlisle55 wrote:

Is the <cfset entitySave(blogPost) /> not saving the values in the database then?

Not when you refresh the page.