Openxava基于已登录用户过滤数据

时间:2017-02-21 08:56:25

标签: filter openxava

如上所述,我希望仅从登录用户处获取单独的数据。例如,在同时或非同时,user1加载他/她自己的数据,而user2加载他/她自己的数据,这两个用户不共享相同的数据输出。

1 个答案:

答案 0 :(得分:1)

以下代码是获取url参数值和过滤用户数据的解决方案。

Activity.java

    ...

    @Hidden
    @ReadOnly
    @OnChange(GetParameterValueAction.class)
    @Column(name="AKA_LOC_ID", length=10)
    private String locId;

    ...

    Getters and Setters

GetParameterValueAction.java

...

public class GetParameterValueAction extends OnChangePropertyBaseAction {

    @Override
    public void execute() throws Exception {

        String locId = getRequest().getParameter("LocId");

        getView().setValue("locId", locId);

    }

}

OnEachRequestFilteredTabAction.java

...

public class OnEachRequestFilteredTabAction extends BaseAction{

    @Inject @Named("application_locId")
    private String locId;

    @Inject
    private Tab tab;

    @Override
    public void execute() throws Exception {
        locId = getRequest().getParameter("LocId");
        if (!Is.empty(locId)) tab.setBaseCondition("${locId}='" + locId + "'");
        else tab.setBaseCondition("${locId}='ERROR'");
    }

    public String getLocId() {
        return locId;
    }

    public void setLocId(String locId) {
        this.locId = locId;
    }

    public Tab getTab() {
        return tab;
    }

    public void setTab(Tab tab) {
        this.tab = tab;
    }



    }

controllers.xml

<?xml version = "1.0" encoding = "ISO-8859-1"?>
<!DOCTYPE controllers SYSTEM "dtds/controllers.dtd">

<controllers>

   <object name="application_locId" class="java.lang.String" scope="global"/>
   <controller name="DataAccessControl">
        <action name="initTab" 
            hidden="true" 
            on-each-request="true" 
            mode="list" 
            class="org.survey.actions.OnEachRequestFilteredTabAction" />
    </controller>

</controllers>

application.xml中

<?xml version = "1.0" encoding = "ISO-8859-1"?>
<!DOCTYPE application SYSTEM "dtds/application.dtd">
<application name="____"> //your application/folder name 

    <module name="Activity">
        <model name="Activity"/>
        <controller name="Activity"/>
        <controller name="DataAccessControl"/>
    </module>

</application>