【问题标题】:Search by specific cloumn name in Seam在 Seam 中按特定列名搜索
【发布时间】:2013-10-04 09:49:20
【问题描述】:

我正在使用 jsf1.2 进行接缝工作。

对我来说一切正常,除了搜索操作。任何人都可以建议我以正确的方式去吗?

在这里,我的表单如何:

            <h:form class="input-list" id="searchUser" style="width:100%;"
            name="searchUser">
                    <div class="edit-label">FIRST NAME :</div>
                <h:inputText tabindex="1" id="firstName" type="text" class="miniusername clp"
                value="#{userListAction.firstName}" required="true">
                <f:validateLength minimum="3" maximum="20" />
            </h:inputText>

            <h:commandButton value="Search" tabindex="2" style="margin-left: 5px"
                action="#{userListAction.retrieveName}" class="usersearch">
            </h:commandButton>
        </h:form>

我的界面:

    @Local
    public interface UserListAction extends Serializable {

        public List<User> retrieveCustomers();

        public List<User> retrieveEmployees();

        public List<User> getUsersList();

        public CLRPUser getLoginUser();

        public List<User> retrieveName();

        @WebRemote
        public String deleteById(Integer userId);

        @WebRemote
        public CLRPUser getUserById(Integer userId);

        public UserTypeEnum getUserType();

        public void setUserType(UserTypeEnum userType);

        public void setFirstName(String firstName);

        public String getFirstName();

        public CLRPUser getCurrentUser();

        public void setCurrentUser(CLRPUser currentUser);

    }

实现接口的Action类:

    @Name("userListAction")
    @Stateless
    @AutoCreate
    public class UserListActionImpl implements UserListAction {

        @In
        protected UserService userService;

        @Out(value = "userType", scope = ScopeType.CONVERSATION, required = false)
        private UserTypeEnum userType;

        @In
        private LoggedInUser loggedInUser;

        @Out(value = "currentUser", scope = ScopeType.CONVERSATION, required = false)
        @In(value = "currentUser", scope = ScopeType.CONVERSATION, required = false)
        private CLRPUser currentUser;   

        @In(value = "firstName", scope = ScopeType.CONVERSATION, required = false)
        private String firstName;

        /**
         * 
         */

        private static final long serialVersionUID = 8649412602585430272L;

        /*
         * (non-Javadoc)
         * 
         * @see com.ermms.clrp.user.UserAction#getUsersList()
         */


        public List<User> retrieveName() {
            System.out.print("FirstName is :" + firstName);
            return userService.getAllUsers(firstName);
        }


        public UserTypeEnum getUserType() {
            return this.userType;
        }

        public void setUserType(UserTypeEnum userType) {
            this.userType = userType;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        public String getFirstName() {
            return firstName;
        }

        @Override
        public CLRPUser getCurrentUser() {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public void setCurrentUser(CLRPUser currentUser) {
            // TODO Auto-generated method stub

        }
    }

控制台说名字是:null。

我尝试了更多次,但对此我失去了理智。请给我建议。

【问题讨论】:

    标签: jsf seam crud


    【解决方案1】:

    为什么要在userListAction-组件中注入firstName?这应该从哪里来? 如果没有更多,我想它的工作原理如下:

    1. 用户输入名字并点击命令按钮
    2. 提交表单并使用 setter 方法将输入的名字设置到模型中
    3. 当执行命令按钮动作时,Seam-bijection 发生并注入存储在“some”上下文中的firstName 的值。由于它没有在任何地方定义,null 被注入。

    因此,如果您需要注入(对于任何情况),您应该在比赛中的任何地方输入正确的值。如果没有,只需删除 @In 注释即可。

    【讨论】:

    • MrD 试图告诉您的是,您不需要在表单中注入每个字段。提交表单时,您的 inputtext 值将连接到 UseListAction bean 的 firstName 属性。
    • 哇...太好了。它就像魅力一样。谢谢 MrD 和 Esteve.. 也为我的延误道歉.. 我已经与其他项目联系在一起.. 向你致敬 MrD。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多