[Cppcms-users] How to add second web page in CppCMS application?
Brought to you by:
artyom-beilis
From: chenshu <csf...@gm...> - 2011-10-01 12:26:34
|
Hello, I have set up one simple web application here:http://www.cmlelectronics.com:8080/kaimei It only has one page and works.Now I try to add another new page for registering new user. I create register_client.tmpl in src folder,configure my CMakeLists.txt like so: //for my first page add_custom_command( OUTPUT ${CMAKE_SOURCE_DIR}/src/my_skin.cpp COMMAND cppcms_tmpl_cc ${CMAKE_SOURCE_DIR}/src/welcome.tmpl -o ${CMAKE_SOURCE_DIR}/src/my_skin.cpp DEPENDS welcome.tmpl ) //for my second page add_custom_command( OUTPUT ${CMAKE_SOURCE_DIR}/src/register_client.cpp COMMAND cppcms_tmpl_cc ${CMAKE_SOURCE_DIR}/src/register_client.tmpl -o ${CMAKE_SOURCE_DIR}/src/register_client.cpp DEPENDS register_client.tmpl ) AUX_SOURCE_DIRECTORY(${CMAKE_SOURCE_DIR}/src CPP_LIST) add_executable(main ${CPP_LIST} my_skin.cpp register_client.cpp) The following is my config.js: { "service" : { "ip":"0.0.0.0", "api" : "http", "port" : 8080 }, "db" : { "name" : "fucai", "ip" : "myip", "user": "myusr", "password":"mypwd" }, "http" : { "script_names" : ["/kaimei"] }, "uri_config":{ "base":"http://www.cmlelectronics.com", "jsonp":"http://localhost:8080" } } I defined one class hello: class hello : public cppcms::application { public: hello(cppcms::service &srv); void save_email(std::string content); void welcome(std::string url); void register_client(std::string url); private: content::message c_; }; hello::hello(cppcms::service &srv):cppcms::application(srv){ dispatcher().assign("/welcome" , &hello::welcome , this , 1); dispatcher().assign("/register" , &hello::register_client , this , 2); dispatcher().assign("/save_email?(.+)" , &hello::save_email , this , 3); configuration& config = app_singleton_holder::Instance().config(); c_.base_uri=config.base_uri; c_.jsonp= config.jsonp; } void hello::welcome(std::string url){ render("message",c_); } void hello::register_client(std::string url){ render("message2",c_); } But always get the following error message when I want to open my pages via http://localhost:8080/kaimei/welcome or http://localhost:8080/kaimei/register 2011-10-01 12:22:14 GMT; cppcms, error: Caught exception [There is no such skin:] 0x7fa68cc3b434: cppcms::cppcms_error::cppcms_error(std::string const&) + 0x64 in /usr/lib/libcppcms.so.1 0x7fa68cc7e907: cppcms::views_pool::render(std::string, std::string, std::ostream&, cppcms::base_content&) + 0x12e7 in /usr/lib/libcppcms.so.1 0x7fa68cc65875: cppcms::application::render(std::string, cppcms::base_content&) + 0x85 in /usr/lib/libcppcms.so.1 0x40d866: hello::welcome(std::string) + 0x50 in ./main 0x40ef55: cppcms::url_dispatcher::binder1<hello>::operator()(std::string) const + 0x9b in ./main 0x40ede5: booster::function<void (std::string)>::callable_impl<void, cppcms::url_dispatcher::binder1<hello> >::call(std::string) + 0x3b in ./main 0x7fa68cc6b579: ??? + 0x8cc6b579 in /usr/lib/libcppcms.so.1 0x7fa68cc68a6d: cppcms::url_dispatcher::dispatch(std::string) + 0x8d in /usr/lib/libcppcms.so.1 0x7fa68cc30884: cppcms::application::main(std::string) + 0x24 in /usr/lib/libcppcms.so.1 0x7fa68cc5e12e: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) + 0x6e in /usr/lib/libcppcms.so.1 0x7fa68cc5ffec: booster::function<void ()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() + 0x4c in /usr/lib/libcppcms.so.1 0x7fa68cc61112: cppcms::impl::thread_pool::worker() + 0x82 in /usr/lib/libcppcms.so.1 0x7fa68b256d2e: booster_thread_func + 0x1e in /usr/local/lib/libbooster.so.0 0x7fa68b696d8c: ??? + 0x8b696d8c in /lib/x86_64-linux-gnu/libpthread.so.0 0x7fa68b99404d: clone + 0x6d in /lib/x86_64-linux-gnu/libc.so.6 (http_context.cpp:150) welcome.tmpl file's content: <% c++ #include "content.h" %> <% skin my_skin %> <% view message uses content::message %> <% template render() %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ... register.tmpl file's content: <% c++ #include "content.h" %> <% skin client %> <% view message2 uses content::message %> <% template render() %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script src="http://c ...... |