2017-02-21 53 views
0

作为上述标题,我希望仅从登录用户获取分离的数据。例如,同时或不同时,user1加载他/她自己的数据,而user2加载他/她自己的数据,这两个用户不共享相同的数据输出。Openxava根据登录用户筛选数据

回答

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>