Bobby Mitchell wrote: > Antonio Gallardo Rivera wrote: > >> I am trying to start the example of mod-db using PostgreSQL. >> >> Currently, I have the autoincr, working, but the problem now is >> inserting a new row in the table "groups" - the easier one ;). >> >> In the database.xml there is defined as: >> >> <table name="groups"> >> <keys> >> <key name="gid" type="int" autoincrement="true"> >> <mode name="auto" type="autoincr"/> >> </key> >> </keys> >> <values> >> <value name="gname" type="string"/> >> </values> >> </table> >> >> Also.... >> >> <table-set name="groups"> >> <table name="groups"/> >> </table-set> >> >> In the userlist.xsp there is a form that handle the new-group action: >> >> <sqltblrow> >> <gname> >> <form> >> <input type="text" name="groups.gname" size="20" maxsize="20"/> >> <input type="submit" name="add-group" value="new group"/> >> </form> >> </gname> >> </sqltblrow> >> >> But when I try to Add a new group, It cannot get the groups.gname >> parameter. It store a null. In the sitemap.log I found the following: >> >> Current Sitemap Parameters: >> LEVEL 2 >> PARAM: 'add-group' VALUE: 'new group' >> PARAM: 'groups.gname' VALUE: 'wsqa' >> LEVEL 1 >> PARAM: '../0' VALUE: 'user-list' >> PARAM: '../1' VALUE: 'user-list' >> >> Thread-9/DefaultComponentFactory: ComponentFactory creating new >> instance of org.apache.cocoon.acting.modular.DatabaseAddAction. >> Thread-9/DefaultComponentFactory: no logger attribute available, >> using standard logger >> >> Thread-9/AbstractComplementaryConfigurableAction: (Re)Loading >> database.xml >> Thread-9/DatabaseAction: modeTypes : {1=others, 2=attribute, 0=autoincr} >> Thread-9/DatabaseAction: i=0 >> Thread-9/DatabaseAction: requested mode was "autoincr" returning >> "autoincr" >> Thread-9/DatabaseAction: i=1 >> Thread-9/DatabaseAction: requested mode was "others" returning "others" >> Thread-9/DatabaseAction: query: INSERT INTO groups (gname) VALUES (?) >> Thread-9/DatabaseAction: Trying to set column groups.gname from >> request using getAttribute method >> Thread-9/DatabaseAction: Setting column groups.gname [0] null >> Thread-9/DatabaseAction: ====> row no. 0 >> Thread-9/DatabaseAddAction: Automatically setting key >> Thread-9/DatabaseAction: Setting column groups.gname[0] to null >> Thread-9/DatabaseAction: Could not select output mode attribute:null >> Thread-9/DatabaseAction: Setting column groups.gid[0] to 10 >> Thread-9/DatabaseAction: Could not select output mode attribute:null >> Thread-9/DatabaseAction: Could not select output mode attribute:null >> Thread-9/DefaultComponentFactory: ComponentFactory decommissioning >> instance of org.apache.cocoon.acting.modular.DatabaseAddAction. >> >> Also, the sitemap is: >> >> <!-- add own new group --> >> <map:act type="req-params"> >> <map:parameter name="parameters" value="add-group >> groups.gname"/> >> <map:act type="mod-db-add"> >> <map:parameter name="table-set" value="groups"/> >> </map:act> >> </map:act> >> >> >> Please help, >> >> > > Check the documentation at User Documentation/Actions/Database. Read > closely the sections "How to obtain Values" and "How to store Values > e.g. in your Session". > > It's not completely clear, but it helps. Here are some examples from > what I have done so far. I hope they are right. > > 1. Declaration of the modular action in the sitemap: > <map:action name="mod-db-add" > src="org.apache.cocoon.acting.modular.DatabaseAddAction"> > <!-- <throw-exception>true</throw-exception> --> > <!-- If this is set false, when the action fails it does not > produce an error > <input>request-parameter</input> <!--This input > module has to be described in cocoon.xconf. --> > <output>session-attribute</output> > <!--Ditto for the output module--> > </map:action> > 2. Define <map:act/> in the sitemap: > <map:act type="mod-db-add" src="optional src" > > <map:parameter name="descriptor" value="database.xml"/> > <map:parameter name="table-set" value="<"table-set > value"/> > <!-- You can also map parameters for the action, such > as <map:parameter name="throw-exception" value="true"/> --> > </map:act> > > Hope this helps.
Forgot a couple of things. In the descriptor file: <value name="ID" type="int"> <mode name="session-attribute" parameter="org.apache.cocoon.components.modules.output.OutputModule:ID[0]" type="attrib"/> <!-- if others-mode=attrib, use this one --> <mode name="request-parameter" parameter="ID" type="request"/> <!-- if others-mode=request, use this one --> <mode name="something" parameter="ID" type="all"/> <!-- I don't care what others-mode is, always use this one --> </value> <mode name="request-parameter" parameter="PREFIX" type="request" <table-set name="MAILLIST-upd"> <table name="NIAC_MAILLIST" others-mode="request"/> </table-set> Here others-mode request is saying "get the values from however I defined type=request in the mode name". Other values are: attrib - get values from attributes; session if <input/> is session, request if <input/> is request. others -- I'm not sure. I could be absolutely wrong on this one, but it seems to work. It would be really nice if we could list all combinations of values with a short description(not too short) about what each setting accomplishes and put it in the docs for the mod-db actions. Bobby > > > >> Regards, >> >> Antonio Gallardo. >> >> --------------------------------------------------------------------- >> Please check that your question has not already been answered in the >> FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> >> >> To unsubscribe, e-mail: <[EMAIL PROTECTED]> >> For additional commands, e-mail: <[EMAIL PROTECTED]> >> >> > > -- Robert J. (Bobby) Mitchell Systems Administrator NASA Institute for Advanced Concepts 555A 14th St Atlanta, Ga. 30318 Phone: (404)347-9633 Fax: (404)347-9638 --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]>